Hoi,
Gisteren ben ik begonnen met mijn eerste stappen in C# en DirectX. Ik wil uiteindelijk gaan proberen om een Pong3D spel te maken. Ik kan vrij goed overweg met C en heb hiervoor ook al een keer gewerkt met Java3D.
Ik ben begonnen met de tutorial die ik heb gevonden op http://users.pandora.be/riemer/ en dit lukte me goed. Snapte ook redelijk goed wat ik aan het doen was enzo.
Ik heb nu echter een probleem omdat ik niet goed weet hoe ik nu verder moet. Het is namelijk zo dat in de tutorial maar op 1 plek een transformatie wordt toegepast op het _gehele_ wereld model.
Namelijk op deze manier:
Ik heb hier dus 2 vertex arrays, die beiden zijn opgebouw met modelcoordinaten. Ik wil deze 2 "modellen" nu ook op verschillende plekken toevoegen in mijn scene. Het probleem hierbij is dat ik niet heb kunnen vinden hoe ik een Translation/Rotation uitvoer op zo'n model (vertex array).
Bij Java3D kon je aan de base_node transformatie groepen vastmaken, die weer bepaalde modellen bevatte. Zo'n model kon vervolgens weer transformatie groepen bevatten, enz. Hiermee beschreef je dus de hele scene, waarbij alle modellen gewoon hun eigen coordinatenstelsels hadden.
Kan je deze methodiek (die ik zelf erg mooi/logisch vind) ook standaard gebruiken bij Direct3D?
Ik heb zelf al geprobeerd te zoeken in de MSDN Library, maar heb niks nuttigs kunnen vinden. (Misschien komt dit doordat ik niet ervaren ermee ben, maar goed...) Ook in andere tutorials die ik heb gevonden wordt alleen gebruik gemaakt van die "vid_dev.Transform.World".
Ik kan me evt voorstellen dat je wel zelf alle vertices moet samenvoegen tot 1 worldmodel en daar dan een transformatie op toepassen, maar dan vraag ik me dus af waar de functionaliteit is voor het transformeren en samenvoegen van de losse modellen.
[edit]
*zucht*
Misschien moet ik toch meer proberen te testen voordat ik domme vragen ga stellen.
Door een andere Transform.World door te geven voordat ik het tweede model Draw, kan je deze een andere transformatie geven...
Alsnog blijf ik de methode van Java3D handiger vinden... Daarbij kan je modellen aan elkaar vastmaken, waarbij de transformaties gewoon "bij elkaar optellen". Blijft alsnog de vraag of dat kan in Direct3D...
Gisteren ben ik begonnen met mijn eerste stappen in C# en DirectX. Ik wil uiteindelijk gaan proberen om een Pong3D spel te maken. Ik kan vrij goed overweg met C en heb hiervoor ook al een keer gewerkt met Java3D.
Ik ben begonnen met de tutorial die ik heb gevonden op http://users.pandora.be/riemer/ en dit lukte me goed. Snapte ook redelijk goed wat ik aan het doen was enzo.
Ik heb nu echter een probleem omdat ik niet goed weet hoe ik nu verder moet. Het is namelijk zo dat in de tutorial maar op 1 plek een transformatie wordt toegepast op het _gehele_ wereld model.
Namelijk op deze manier:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| this.vertices = new CustomVertex.PositionColored[3]; this.vertices2 = new CustomVertex.PositionColored[3]; // code om de vertices te vullen en te kleuren. ... // vid_dev is een Direct3D.Device vid_dev.BeginScene(); vid_dev.Transform.World = Matrix.RotationY(angle); vid_dev.VertexFormat = CustomVertex.PositionColored.Format; vid_dev.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices); vid_dev.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices2); vid_dev.EndScene(); |
Ik heb hier dus 2 vertex arrays, die beiden zijn opgebouw met modelcoordinaten. Ik wil deze 2 "modellen" nu ook op verschillende plekken toevoegen in mijn scene. Het probleem hierbij is dat ik niet heb kunnen vinden hoe ik een Translation/Rotation uitvoer op zo'n model (vertex array).
Bij Java3D kon je aan de base_node transformatie groepen vastmaken, die weer bepaalde modellen bevatte. Zo'n model kon vervolgens weer transformatie groepen bevatten, enz. Hiermee beschreef je dus de hele scene, waarbij alle modellen gewoon hun eigen coordinatenstelsels hadden.
Kan je deze methodiek (die ik zelf erg mooi/logisch vind) ook standaard gebruiken bij Direct3D?
Ik heb zelf al geprobeerd te zoeken in de MSDN Library, maar heb niks nuttigs kunnen vinden. (Misschien komt dit doordat ik niet ervaren ermee ben, maar goed...) Ook in andere tutorials die ik heb gevonden wordt alleen gebruik gemaakt van die "vid_dev.Transform.World".
Ik kan me evt voorstellen dat je wel zelf alle vertices moet samenvoegen tot 1 worldmodel en daar dan een transformatie op toepassen, maar dan vraag ik me dus af waar de functionaliteit is voor het transformeren en samenvoegen van de losse modellen.
[edit]
*zucht*
Misschien moet ik toch meer proberen te testen voordat ik domme vragen ga stellen.
Door een andere Transform.World door te geven voordat ik het tweede model Draw, kan je deze een andere transformatie geven...
Alsnog blijf ik de methode van Java3D handiger vinden... Daarbij kan je modellen aan elkaar vastmaken, waarbij de transformaties gewoon "bij elkaar optellen". Blijft alsnog de vraag of dat kan in Direct3D...
[ Voor 10% gewijzigd door VyperX op 08-02-2005 16:25 ]
My Dwarf Fortress ASCII Reward: ~~@~~####,.".D",.B""