GaRv3 Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Hallo zusammen, ich hab gerade ein Problem bei der Darstellung von in Unity erstellten Models. Hier ein Screenshot eines einfachen Würfels: Links: Eigenes Model Mitte: Unity Primitive Cube Rechts: Blender Cube Ich erstelle die Vertices, setze die UV-Koordinaten, erstelle die Polygone und weise alles zu: Mesh mesh = new Mesh(); mesh.Clear(); mesh.vertices = vertices; mesh.uv = uvs; mesh.triangles = tris; mesh.RecalculateBounds(); mesh.RecalculateTangents(); mesh.RecalculateNormals(); mesh.name = "RockMesh"; meshFilter.mesh = mesh; meshCollider.sharedMesh = mesh; Das Material ist bei allen identisch. Jemand spontan ne Idee, wo der Fehler liegt? Komme irgendwie nicht drauf. Vielen Dank und beste Grüße GaRv3 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Könnte an den Normals liegen, schau mal die Modelle im Inspector, dort hast du unten "Normals & Tangents", vergleich mal die Werte. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
GaRv3 Geschrieben 22. Juli 2018 Autor Melden Share Geschrieben 22. Juli 2018 Hmm, okay. Ich glaub, ich hab den Fehler gefunden. Sowohl der von Blender importierte, als auch der Primitive Cube haben 24 Vertices. Also hat jede Ecke ein Vertice pro angrenzendem Face. Dann werden die Normalen entsprechend berechnet und es entstehen die scharfen Kanten. Ich habe mit 8 Vertices (eins je Ecke) gearbeitet. Daher stehen die Normalen immer diagonal zum Face und der Shader versucht, das ganze abgerundet zu Schattieren. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
SkipToPlay Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Ich weiß nicht wie es mit generierten Objekten aussieht, aber bei der Modellierung hat man die Möglichkeit, Kanten die scharf gerendert werden soll zu definieren. Somit hat man die Möglichkeit zwischen Phong-Shading und Flat-Shading zu unterscheiden. Wenn meine Modelle scharfe Kanten bekommen sollen, werden keine extra Vertices dafür erstellt, daher modelliertechnisch betrachtet hast du mit den 24 etwas gemogelt. Ich kann dir aber nicht sagen, ob das in der Engine wieder irgendwo umgerechnet wird - bin nur modellierer. Dieser Shadingeffekt kommt aber auf jeden Fall vom Phong-Shading. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
GaRv3 Geschrieben 22. Juli 2018 Autor Melden Share Geschrieben 22. Juli 2018 Doch, wenn man die Kanten scharf zeichnen lässt, splittet Unity die Vertices beim Import. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Hab gerade mal bissl hier gelesen: https://docs.unity3d.com/ScriptReference/Mesh.html Woher kommen eigentlich deine Triangels, UV und Verticies? Liegt eventuell hier der Fehler? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 @Kojote Schau dir mal den Code an Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Mach ich ja, ist für mich interessantes Neuland, deswegen stocher ich gern mit nach Antworten. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Naja, die Antwort ist ja schon gefunden worden. Es gibt zu jedem Vertex einen Normalenvektor. Wenn du einen optimierten Cube generierst, hat der 8 Vertices, für jede Ecke einen. Allerdings kann der Normalenvektor jedes Vertices nur in eine Richtung zeigen, sodass eine abgerundete Kante bei der Lichtberechnung entsteht. Um harte Kanten zu haben, braucht jede Ecke jeder Fläche jeweils einen eigenen Normalenverktor. Und dafür braucht jede Ecke auch ihren eigenen Vertex. Man muss also auf jede Ecke drei Vertices packen (für jede angrenzende Fläche eines), damit jede Fläche an jeder Ecke einen eigenen Normalenvektor bekommt. Macht also 8 * 4 = 24 Vertices statt 8. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kojote Geschrieben 22. Juli 2018 Melden Share Geschrieben 22. Juli 2018 Aha, interessant, wusste ich noch gar nicht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.