Toon posts:

[3dengine] Architectuur 3dengine

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag weten hoe ik het beste een 3dengine kan opzetten.Het moet zo opgezet worden dat ik later makkelijk nieuwe features kan toevoegen.

Ik kan over dit onderwerp maar weinig informatie vinden op het internet dus vraag ik het hier maar.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Kijk eens naar bestaande engines... Als je daar mee hebt gespeeld komt er al snel een structuur naar voren hoe zij het gedaan hebben.

http://crystal.sourceforge.net/

Verwijderd

Topicstarter
Bedankt voor het voorbeeld, maar ik zou toch graag eerst wat meer willen weten over de structuur van een 3dengine en dan met die structuur in mijn achterhoofd de source code van andere 3d engines bestuderen.

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

niets gevonden op gamedev.net / flipcode.com ?

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 21:48
Moet je er ff een goed over bijpakken van "3D computer graphics". Ik heb zelf zo'n boek in mijn boekenkast staan, uit mijn Universiteits-tijdperk...

Heel grof, bestaat een 3D engine uit 2 delen:
- het transformeren van de 3D scene (bestaat uit polygons) naar een coordinatenstelsel met je camerapunt als middenpunt. Nu kan je gelijk een dieptetransformatie doen.
- het omzetten van de polygons naar pixels, door ze van een texture te voorzien en de dieptewaarde in een dieptebuffer te registreren (tenminste, als je Z-buffering wilt gebruiken)

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op vrijdag 01 februari 2002 14:25 schreef GarBaGe het volgende:
Moet je er ff een goed over bijpakken van "3D computer graphics". Ik heb zelf zo'n boek in mijn boekenkast staan, uit mijn Universiteits-tijdperk...

Heel grof, bestaat een 3D engine uit 2 delen:
- het transformeren van de 3D scene (bestaat uit polygons) naar een coordinatenstelsel met je camerapunt als middenpunt. Nu kan je gelijk een dieptetransformatie doen.
- het omzetten van de polygons naar pixels, door ze van een texture te voorzien en de dieptewaarde in een dieptebuffer te registreren (tenminste, als je Z-buffering wilt gebruiken)
en dan komen de extratje's er bij kijken.

te denken valt aan:

Texture Mapping
Sub-Pixel / Texel Accuracy
Gouraud / Phong Shading
Enviroment Mapping
Motion Blur
Oversampling antialiasing and simple blur antialiasing
Fogging and distance cueing
Paralell & Point lights
Binary Space Partitioning Trees (BSP)
Flat-shaded polygons

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 14-09 22:15

Sponge

Serious Game Developer

en evt.:

-Vertex/Pixel shaders
-Support voor meerdere video kaarten (Transparant op Voodoo is niet altijd transparant op GF3..)
-Transform Matrices

etc.

Met DirectGraphics is het misschien wat makkelijker :) tenzij je erg goed bent in wiskunde :)

Verwijderd

Topicstarter
niets gevonden op gamedev.net / flipcode.com ?
Jewel heel veel, maar niet over dit onderwerp :)
Moet je er ff een goed over bijpakken van "3D computer graphics". Ik heb zelf zo'n boek in mijn boekenkast staan, uit mijn Universiteits-tijdperk...
Ik heb nog geen boek over dit onderwerp, maar als je een paar leuke boeken weet dan zou ik der graag meer van willen horen.
en dan komen de extratje's er bij kijken.
Daarom wil ik de structuur dus goed hebben en ik ga natuurlijk eenvoudig beginnen.


PS: ik ga gebruik maken van opengl/directx

Verwijderd

Topicstarter
-Vertex/Pixel shaders
-Support voor meerdere video kaarten (Transparant op Voodoo is niet altijd transparant op GF3..)
-Transform Matrices
Uh later laten we maar met het ontwerp beginnen, dan kan ik later deze dingen nog toevoegen als het ontwerp goed in elkaar zit.

  • franklin
  • Registratie: Februari 2000
  • Laatst online: 14-09 14:27

franklin

denkt teveel...

ik heb nog een cool boek... heb ik nog niet zo lang maar ik heb eigenlijk geen tijd en het is zonde van zo'n duur boek om te laten liggen! ik zal straks ff kijken en de titel posten of mail/icq me ff, misschien is het wat voor je!

  • RUXperienced
  • Registratie: November 2000
  • Laatst online: 24-06-2024
Het boek wat ik hier heb liggen is:
'3D Games, Real-time Rendering and Software Technology' van Alan Watt en Fabio Policarpo.

Duur, maar goed. En t mooiste is nog wel dat ik een vak op de universiteit bij het boek heb gevonden :)

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics - by David H. Eberly
ISBN: 1558605932

3D Graphics Programming: Games and Beyond (with CD-ROM) - by Sergei Savchenko
ISBN: 0672319292

Black Art of 3d Game Programming with Cdrom - By Andre LaMothe
ISBN: 1571690042

3D Games: Real-Time Rendering and Software Technology, Volume 1 (With CD-ROM) - by Alan Watt, Fabio Policarpo
ISBN: 0201619210

Beginning Direct3D Game Programming - by Wolfgang F. Engel, Andre' Lamothe (Editor), Amir Geva
ISBN: 0761531912

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Ik heb Computer Graphics Practice & Principles Foley & van damm

Verder zou ik je eens adviseren om deze vraag ook eens te stellen op http://gameskool.nl/forum/, zodat ik je daar precies dezelfde antwoorden kan geven die ik je hier net heb gegeven :)

Verwijderd

Topicstarter
ik heb nog een cool boek... heb ik nog niet zo lang maar ik heb eigenlijk geen tijd en het is zonde van zo'n duur boek om te laten liggen! ik zal straks ff kijken en de titel posten of mail/icq me ff, misschien is het wat voor je!
Als je de titel post dan ga ik kijken op amazon of het wat voor mij is.
Verder zou ik je eens adviseren om deze vraag ook eens te stellen op http://gameskool.nl/forum/, zodat ik je daar precies dezelfde antwoorden kan geven die ik je hier net heb gegeven
Lopen daar de experts rond? :)
Allemaal boeken
Ik ga even kijken op amazon of er nog een leuk boek bij zit.


Heeft iemand trouwens een idee hoe ik het beste die polygonen kan opslaan?

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Op vrijdag 01 februari 2002 15:39 schreef Avater het volgende:
[..]
Lopen daar de experts rond? :)
Misschien... Give it a try zou ik zeggen.
[..]
Ik ga even kijken op amazon of er nog een leuk boek bij zit.

Heeft iemand trouwens een idee hoe ik het beste die polygonen kan opslaan?
http://www.vergelijk.nl/ <- voor goedkopere aanbiedingen ;)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op vrijdag 01 februari 2002 15:39 schreef Avater het volgende:
Heeft iemand trouwens een idee hoe ik het beste die polygonen kan opslaan?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//HeelErgSimpel 3D ASCII

//[Header: ]
"Box"

//[Aantal vertices: ]
6

//[Vertices met coordinaten: ]
1 -10.000000 10.000002 10.000003
2 -10.000000 -9.999998 10.000003
3 10.000000 10.000002 10.000003
4 10.000000 -9.999998 10.000003
5 10.000000 10.000002 10.000003
6 10.000000 -9.999998 10.000003

//[Aantal polygons: ]
2

//[Polygons met nummers van vertices: ]
1 3 2
4 5 6

Zoiets?

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 14-09 22:15

Sponge

Serious Game Developer

Ik zou iig opslaan:

Vertex posities (x,y,z)
Vertex normal (bespaard weer wat reken werk tijdens gebruik)
Tu,tv Texture coords (als je een texture op een model wilt plakken)
Misschien support voor meerdere "polygoon data", om bijv animaties te kunnen blenden (sie dolphin demo in DX8 sdk)

Eventueel nog de diffuse color.

Check anders het .X formaat van DX... of het 3D studio formaat. (wotsit.org)

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 11-09 10:38

Killemov

Ik zoek nog een mooi icooi =)

Download de DX8 SDK. Daarin staan wat frameworks voor DX games in waarin je vrij gemakkelijk het een en ander in kan passen. Ik dacht dat NVidia zelf ook een DX8 framework ter beschikking stelt. Even kijken bij NVidia dus. Oh ja: MS Visual C++ 6 is wel nodig, kweetnie of Borland er ook mee werkt.

Hey ... maar dan heb je ook wat!


Verwijderd

Als je het echt helemaal zelf wilt doen heb ik wel wat tips:
-Zorg ervoor dat je scene die je wilt renderen wordt opgeslagen in een hierarchische datastructuur. Bijvoorbeeld een boom. Zoiets als : world->object->polygon->points
-Zorg dat de rendering of eigenlijk beter de rasterizing wordt gedaan door opengGL oid en dat dit verder compleet los staat van de rest van de engine (dan kan je eventueel later nog DX toevoegen of software rendering)
-Kijk beter op flipcode ed er staan echt wel artikelen over.
-verdiep je in bsp-trees
-kijk voor een goed voorbeeld van scene-graphs naar plib.sf.net

Heel basaal is een engine het volgende:
-bepaal zichtbare vertices (zo daar heb ik me makkelijk vanaf gemaakt) tov camera
-bepaal kleur van vertices
-beeldt af.

Maar das wel zo enorm simpel dat je er nix aan hebt.

Verwijderd

Topicstarter
Zoiets?
Ik bedoelde eigenlijk hoe de data structuur eruit moest zien, maar in ieder geval bedankt want de 3d wereld zal toch ergens opgeslagen moeten worden.
Ik zou iig opslaan:
Vertex posities (x,y,z)
Vertex normal (bespaard weer wat reken werk tijdens gebruik)
Tu,tv Texture coords (als je een texture op een model wilt plakken)
Misschien support voor meerdere "polygoon data", om bijv animaties te kunnen blenden (sie dolphin demo in DX8 sdk)
Ik zal eerst maar beginnen met x,y,z en de texture coords om dan later de andere dingen toe te voegen en ik wou animaties pas later gaan gebruiken.
Download de DX8 SDK. Daarin staan wat frameworks voor DX games in waarin je vrij gemakkelijk het een en ander in kan passen. Ik dacht dat NVidia zelf ook een DX8 framework ter beschikking stelt. Even kijken bij NVidia dus. Oh ja: MS Visual C++ 6 is wel nodig, kweetnie of Borland er ook mee werkt.
Die SDK ga ik dus downloaden harstikke bedankt en ik heb MS Visual c++ 6 dus dat is geen probleem. :)
-Zorg ervoor dat je scene die je wilt renderen wordt opgeslagen in een hierarchische datastructuur. Bijvoorbeeld een boom. Zoiets als : world->object->polygon->points
okay
Zorg dat de rendering of eigenlijk beter de rasterizing wordt gedaan door opengGL oid en dat dit verder compleet los staat van de rest van de engine (dan kan je eventueel later nog DX toevoegen of software rendering)
Ja ik ben van plan om DX en GL gelijk te gaan gebruiken, maar geen software rendering.
Kijk beter op flipcode ed er staan echt wel artikelen over.
Ja der staan veel artikels, maar niet iets over een globaal ontwerp van een 3dengine.
verdiep je in bsp-trees
Heb ik al gedaan. Het moeilijkste is nog polygon splitting.
Maar das wel zo enorm simpel dat je er nix aan hebt.
Wel enorm duidelijk :), was het maar zo simpel.

Verwijderd

Ik zou beginnen met eerst een basislibrary te maken voor je engine, zoals de superclass met eigenschappen zoals referencecounting en een class maken voor je window aan te roepen en wat classes voor filehandling enz..
Je weet wel wat ik bedoel

Daarna zou je kunnen beginnen met het maken van een math library voor al je wiskundige berekeningen die je nodig hebt voor je engine, zoals een vector3 class en een matrix class. Mischien nog quaternions maar dat is niet echt geheel nodig.

Daarna zou ik beginnen met het opzetten van de renderdevice. Je kan alle opengl en directx routines in aparte dll's zetten en dan een interface maken om te bepalen welke device je gaat gebruiken om je scene te renderen. Je moet ook een structuur bedenken van hoe je je scene wilt renderen. Als je veel indooromgevingen gaat hebben kan je het best een BSP-tree gebruiken en als je een openlucht terrein wilt maken kan je het beste een quadtree of een octree.

Nadat je deze renderdevice op heb gezet kan je beginnen met de rest, zoals een texture class, modelloading, levelloading, muziek, netwerk enz...

En om makkelijk nieuwe features toe te voegen moet je je engine zo modulair mogelijk maken

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Afbeeldingslocatie: http://www2.active.ch/~proxima/idx3d/docu/diagram.gif

:)

Verwijderd

Heej! Ze hebben mijn design gejat! ;) :P

  • franklin
  • Registratie: Februari 2000
  • Laatst online: 14-09 14:27

franklin

denkt teveel...

volgens mij is die van mij ook: '3D Games, Real-time Rendering and Software Technology' van Alan Watt en Fabio Policarpo. en het was inderdaad een prijzig boek

het wordt aan sommige unis iig gebruikt als les/leerboek. Ik zal vanavond als ik thuis kom ff kijken!

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Scorpion: diagram
Bijzonder UML diagram :P ;) .

Wel gelikt :9~ .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • SG
  • Registratie: Januari 2001
  • Laatst online: 13-09 07:59

SG

SG surft naar info hardewaren

Op zondag 03 februari 2002 14:36 schreef mbravenboer het volgende:

[..]

Bijzonder UML diagram :P ;) .

Wel gelikt :9~ .
diagram's original :
Corel Draw 4 document

Niet echt 'n UML tool.

X399 Taichi; ThreadRipper 1950X; 32GB; VEGA 56; BenQ 32" 1440P | Gigbyte; Phenom X4 965; 8GB; Samsung 120hz 3D 27" | W2012SER2; i5 quadcore | Mac mini 2014 | ATV 4g | ATV 4K


  • franklin
  • Registratie: Februari 2000
  • Laatst online: 14-09 14:27

franklin

denkt teveel...

mijn boek is dus idd. '3D Games, Real-time Rendering and Software Technology' van Alan Watt en Fabio Policarpo, en het mag op zich weg omdat ik er voorlopig toch geen tijd meer voor heb... kijk maar eens wat je er voor geven wil of mail me ff op franklin@statix.net
Pagina: 1