2013-02-26 8 views
7

Próbuję utworzyć określony typ obiektu 3D w pliku three.js. Chcę na przykład sześcianu w trybie wireframe (tak, pokazane są tylko krawędzie). Ale chcę, aby krawędzie, które są z tyłu, były przerywane. Ilustracja: illustrationTrójwymiarowy kształt krawędziowy z ukrytymi krawędziami jako przerywanymi liniami

Nie wiem, czy jest to wykonalne przy użyciu pliku three.js, czy powinienem spróbować bezpośrednio z webgl. Czy powinienem używać THREE.Mesh w modelu szkieletowym lub THREE.Line z LineDashedMaterial, a może zarówno jeden nad drugim?

Odpowiedz

4

Udało mi się to zrobić. Musisz utworzyć trzy obiekty.

1-ty Obiekt stałą 3D obiektu (to znaczy te powierzchnie nie na krawędzi)

2. obiektu: wszystkie krawędzie, ale przerywane

3-cie obiektu: wszystkie krawędzie, ale normalny (nie przerywanej)

Dla pierwszego obiektu ustaw materiał na color: false, side: THREE.DoubleSide, depthTest: true.

Materiał drugiego obiektu: color: (whatever you like), depthTest: false.

Materiał trzeciego obiektu: color: (whatever you like), depthTest: true.

Ustawiam również wszystkie materiały z polygonOffset: true, polygonOffsetFactor: 1, polygonOffsetUnits: 1, aby pozbyć się z-walk.

4

To naprawdę świetny pomysł. I wprowadziły swoją odpowiedź, jak opisano powyżej w:

http://stemkoski.github.com/Three.js/Dashed-3D.html

w przypadku ktoś chce zobaczyć go w akcji.

+0

to nie wydaje się już działać. Jeśli dobrze rozumiem, "widoczne" krawędzie powinny być jedynymi wyświetlanymi (jako linie ciągłe), a krawędzie, które zostałyby pokryte, gdyby materiał kostki był wyświetlany, powinny być wyświetlane jako linie przerywane. Czy to jest poprawne? W twoim przykładzie widzę bryłę z liniami przerywanymi i ciągłymi; jednak widzę tylko powierzchnie przednie, ponieważ twarze są stałe. Czy coś zmieniło się z plikiem 3.js? Czy może to zrobić zgodnie z przeznaczeniem? Biorąc pod uwagę pytanie OP, zakładam, że ten przykład nie działa (już). – dylnmc

+0

Ponadto, po przejrzeniu kilku twoich pokazów, zauważyłem również, że przykład modyfikatora powierzchni podziału jest ... nieparzysty. Na zrzutach ekranu zakładam, że działały one jednorazowo. To może być coś z trzem.js, który chagnował? – dylnmc

Powiązane problemy