Seite 1 von 1

Skaliertes Mesh == unbeleuchtet

Verfasst: 15.11.2010, 16:58
von Loebl
Moin. Hab mich grad mal wieder ans progammiern gesetzt nachdem ich seit längerem die schnauze voll davon hatte :))

Mein Problem der "Schwarzen Kugeln" wie ichs nenne hab ich nu schwups die wups gelöst aber nur duch hinwurschteln.


Folgende Sachlage:
Via D3D9 soll ein Planeten-System gerendert werden. Ich hab 10 Objekte mit unterschiedlichen Radien und ein Mesh das eine Kugel mit Radius=1 darstellt.
Zum Rendern jedes Planeten:

m_pDevice->SetTransform (D3DTS_WORD, ( Skalierungsmatrix(ObjektRadius) x Positions-Matrix) )
Mesh->DrawSubset (0);

ergebnis: Alle großen Kugeln pechschwarz, nur die Kleinen beleuchtet.

Bin damals verzweifelt, hab an allem möglichem rumgefrickelt, kam mir sehr vereimert vor und schmiss den Mist einfach in die Ecke.

Wie hab ichs jetzt gelöst?
Mesh klonen, Mesh-Klon-Vertexbuffer locken, Vertex-Normale gem.Objekt-Radius skalieren (NUR die Normalen)
Alles weitere haargenau wie oben.

Fragen: 1) Warum ist das so? 2) Brauch ich jetzt echt für jeden Planeten eine eigene Kugel?

Re: Skaliertes Mesh == unbeleuchtet

Verfasst: 15.11.2010, 17:48
von Schrompf
Evtl. skaliert es Dir die Normalen mit. Da Du keinen VertexShader benutzt, musst Du das der Fixed Transformation Pipeline beibringen. Unter D3D9 gibt es nach meinem Wissen einen Renderstate NORMALIZE_NORMALS oder so ähnlich - aktiviere den mal und schau, ob es dadurch besser wird.

Re: Skaliertes Mesh == unbeleuchtet

Verfasst: 15.11.2010, 18:06
von Loebl
SetRenderState (D3DRS_NORMALIZENORMALS, TRUE);


suuuuuuper. Wenn ich mich nicht solange über den Mist geärgert hätte, würd ich mich jetzt glatt totlachen.