2017-01-11 2 views
0

Ich arbeite gerade an einem Projekt mit ThreeJs.Nicht polygonbasiertes 3D-Modell in ThreeJS (wie in HelloRacer.com)

Momentan benutze ich ein Wavefront-Obj um meine 3D-Modelle darzustellen, aber ich möchte etwas wie -IGES oder -STEP verwenden. Diese Formate werden nicht von ThreeJS unterstützt, aber ich habe die http://helloracer.com/webgl/ gesehen und für mich scheint es, dass dieses Modell aufgrund der kurzen Ladezeit nicht auf Polygonen basiert, wie Sie an der glatten Oberfläche sehen können. Das Modell scheint .js zu sein, also ist es das ThreeJS-JSON-Format?

Wird ein solches Modell erstellt, indem ein IGES/STEP beispielsweise in Clara.io geladen und in threejs-JSON exportiert wird? Ich habe keine Gelegenheit, es selbst zu testen, weil ich momentan kein IGES/STEP-Modell habe, aber ich würde jemanden einen erstellen lassen.

Mit Wellenfront bin ich nicht in der Lage, solche glatten Oberflächen zu erzeugen, ohne eine große Ladezeit und einen langsamen Render zu bekommen.

picture of not smooth surface

, wie Sie auf dem entsandten Beispiel nicht annähernd so glatt sehen können, ist die Oberfläche und Blitz wie.

+0

Können Sie einen Screenshot Ihrer gerenderten Bilder veröffentlichen? –

+0

Ich habe gerade meinen Post bearbeitet, um dir ein Bild zu zeigen, hier kannst du die Polygone sehen, die vom Modell verwendet werden, ich kann das Objekt glätten, aber die Polygonzahl wird schnell zunehmen und es wird alles sehr langsam machen. Da ich etwas Lackmaterial zeigen möchte, brauche ich ein sehr glattes Objekt. (Es gibt auch Transparenz im Material) – Dubbox

Antwort

1

Oberflächen in der Demo, die Sie verknüpft haben, sind nicht glatt, sie sind immer noch polygonal.

Case'n'point

Ich denke, weiche Schattierungen ist das, was Sie suchen. Die Sache ist, normalerweise wird ein Modell basierend auf seiner Normalen schattiert. Also, welche Normalen wir auf Eckpunkte des Modells setzen, ist entscheidend für das, was wir auf einem Bildschirm bekommen. Basierend auf Ihrer Beschreibung haben Ihre Modelle eine separate Norm für jedes Dreieck. Wie auf diesem Bild hat jeder Eckpunkt jedes Dreiecks die gleiche Normale wie das Dreieck selbst. Wenn wir also diese Normalen über ein Dreieck interpolieren, erhalten wir für jeden Punkt des Dreiecks den gleichen Wert. Schattierungsberechnungen ergeben eine gleichmäßige Beleuchtung und das Dreieck erscheint flach auf einem gerenderten Bild.

Face normals

Zur Wirkung der glatten Oberfläche zu erreichen, müssen wir andere Werte für Vertex-Normalen, wie diejenigen auf diesem Bild:

Vertex normals

Wenn wir speichern diese Sphäre in ein beliebiges Format mit den Normalen und versuchen, es zu rendern, interpolierte Normalen ändern sich glatt über die Oberfläche von Dreiecken, die die Kugel umfassen. Somit ergeben Schattierungsberechnungen eine sich sanft ändernde Beleuchtung, und die Oberfläche erscheint glatt.

Also, um zu wiederholen, Modelle, die Sie versuchen zu rendern müssen müssen "geglättet" Vertex Normalen glatt auf einem Bildschirm erscheinen.

UPD. Gemessen an Ihrem Screenshot verwendet Ihr Modell refraktives Material. Dieselbe Idee gilt für Refraktionsberechnungen, da sie auch auf normalen Werten basieren.

+0

Vielen Dank, aber wie ändere ich meine Normalen in Blender zu diesen interpolierten Normalen? – Dubbox

+0

Ah Ich habe es gerade durch Glück herausgefunden!: D werde es gerade jetzt testen – Dubbox

+0

Ok Ich habe gerade herausgefunden, wie man die Vertex-Normalen ändern kann, aber wie verwende ich sie in ThreeJS oder wie setze ich die Normalen auf die Vertex-Normalen beim Exportieren? – Dubbox