#1 09.08.2005 16:54:15

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Culling selbst berechnen

Wie rechnet DirectX aus, ob die Eckpunkte eines Face CW oder CCW angeordnet sind?
Ich brauch ne schnelle Methode, die ausrechnet, ob das Face zu der Kamera schaut, oder anders rum.
Ich könnte das Dotproduct von ViewDir und FaceNormal nehmen, aber ist das die schnellste methode?
:thx:


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#2 09.08.2005 17:03:35

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Culling selbst berechnen

Naja, nach der Transformation in den Screenspace brauchst Du ja nur noch den Z-Wert der Normale. Wenn der >0, dann ists andersherum als wenn <0.

Und die Normale machst Du: Cross (vertex2-vertex1, vertex3-vertex1) oder so. (Je nach CCW oder CW)

Oder du transformiert die FaceNormale (so du sie hast) mit den üblichen Matrizen in den Screenspace, und brauchst dir dann nur noch z anzugucken.

Peer

Offline

 

#3 09.08.2005 17:10:06

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Culling selbst berechnen

Setze die drei Punkte deines Dreiecks in eine Ebenengleichung ein. Dann berechnest du den Abstand deiner Kamera zu dieser Ebene. (Kameraposition in die ebene einsetzen)

Ist der Abstand negativ cullen, positiv nicht cullen...

Kann dir das gerne auch mal mit den DX-Funktionen als Codesample machen


^^ meine methode ist VIEL schneller :p

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#4 09.08.2005 17:14:05

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Culling selbst berechnen

oh, ne so viel schneller auch nicht wink , aber man spart sich das transformieren...

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#5 09.08.2005 18:54:28

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Culling selbst berechnen

Transformieren mußt Du´s ja sowieso, nämlich mit der Weltmatrix.
Und wenn Du an den Shader eine WorldViewProjetion-Matrix übergibst, dann ist das schon ziemlich flott.

Offline

 

#6 10.08.2005 07:32:30

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Culling selbst berechnen

Wieso sowieso?
Wenn er nicht rendern will, braucht er auch nicht transformieren!


My software never has bugs. It just develops random features.

Offline

 

#7 10.08.2005 08:27:13

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Culling selbst berechnen

Trotzdem! <Arme verschränk>

Offline

 

#8 10.08.2005 11:34:54

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Culling selbst berechnen

:mrgreen: .. es klingt beides gut.

@Coolcat: Ganz so viel bringt es nicht, wie du schon sagtest  wink . Ist einfach nur das Punktprodukt, wo ax = ay = az sodass ich das zu einer Konstanten machen kann und ausklammern kann. Spart aber schon etwas.

@DerPeer: Das wird wahrscheinlich langsamer sein, wenn ich die Normale fett mit Matrix transformiere, blos für diesen Cullingtest, denn die bräuchte ich im späteren Verlauf gar nicht mehr  smile.

Ich könnte doch aber die Position mit der WorldViewProjektionMatrix multiplizieren und dann testen, ob Vertex1.x links von Vertex2.x liegt, oder nicht. Damit dürfte ich doch sofort sehen, obs nun linksrum oder rechtsum geht und so ein if-Satz dürfte auch net viel kosten.
Diese transformierte Position könnte ich dann gleich in den VB schreiben und ohne weitere Transformation rendern.

Blos ist die Frage, ob das nun noch schnell ist, wenn ich bspw. die ganzen PositionsVertices in einen array hab, transformiere und jeden Frame dann in den VB stopfe?  :?


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

#9 10.08.2005 14:43:03

DerPeer
GodlikeMember
Ort: Berlin
Registriert: 04.02.2005
Beiträge: 1291

Re: Culling selbst berechnen

Ist dir das noch nicht schnell genug? Ich find die Ideen hier schon nicht schlecht.

Offline

 

#10 10.08.2005 18:07:41

Coolcat
ProGuru
Ort: Aachen, NRW
Registriert: 24.01.2005
Beiträge: 2780
Web-Seite

Re: Culling selbst berechnen

Warum willst du eignetlich selbst cullen?

Coolcat


My software never has bugs. It just develops random features.

Offline

 

#11 11.08.2005 13:13:26

artzuk
GodlikeMember
Ort: Leipzig
Registriert: 24.01.2005
Beiträge: 1164

Re: Culling selbst berechnen

Es geht um ne Optimierung. Ich habe vor, paar Farbenänderungen direkt an den Vertices vorzunehmen. Und das jeden frame! ( ich probiere blos bisl fake subsurfacescattering  big_smile )
Da ist es natürlich logisch, einfach nur die sichtbaren Vertices umzukolorieren.


Mein kleiner .NET Blog: http://artzuk-interactive.de/

Offline

 

Brett Fußzeile

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson