Wiskunde achter 3D engine

Pagina: 1
Acties:
  • 116 views sinds 30-01-2008
  • Reageer

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 21-09 22:47
Xit nu in de 6e en ik zou graag wat linkjes of uitleg willen over de wiskunde achter een 3d engine, helemaal van het begin af, dus niet in een keer een heel moeilijk tutorial. Tiz voor mn profielwerkstuk, samen met een andere jongen, en we hebben het hele jaar nog, maar je kan altijd beter vroeg beginnen.
We hebben allebei niet veel programmeer ervaring, maar we hebben eigenlijk ook alleen maar wiskunde nodig.
thx in advance

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Na 50 seconden gochelen (lees Google-en):
http://3dgraphics.about.com/cs/3dgeneralinfo/?once=true&

|_____vakje______|


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

Scorpion

not to lame to read BitchX.doc

geen programmeer ervaring en toch een stuk doen over de wiskunde achter een 3d engine?? lijkt me een beetje scheef allemaal...

maargoed... www.3dica.org is de beste site die je hier over kan benaderen if u ask me...

  • Marcj
  • Registratie: November 2000
  • Laatst online: 11:31
In de SDK van DirectX staat ook een heleboel uitgelegd (met matrices etc.)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 13:51

Janoz

Moderator Devschuur®

!litemod

Bij een 3d engine heb je meer aan wiskunde dan aan programeer ervaring....

BASICS

Waar je op moet letten zijn de transformaties. Er zijn een aantal basic transformaties (denk aan tekenprogramma). Deze zijn schalen, verplaatsen en draaien. Daarnaast is voor een 3d engine de perspectief transformatie ook een belangrijke.

Voor de transformaties worden over het algemeen matrices gebruikt. De reden hiervoor is:
1 - alle transformaties zijn te herschrijven als een 4x4 matrix
2 - matrices zijn associatief (zo heet dat toch?). Dat betekent dat M1 * (M2 * V)= (M1 * M2) * V. Voordeel hiervan is dat er slechts 1x een gehele transformatie matrix uitgerekend hoeft te worden met daarin schaling rotatie perspectief enz enz, en vervolgens hoefen alle vertices met dezelfde transformatie maar met 1 matrix te vermenigvuldigd worden.

Ik wil best een iets uitgebreidere primer schrijven, maar d'r is ook heel veel te vinden... Suc6

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • 4POX
  • Registratie: Maart 2000
  • Laatst online: 22-09 22:32

4POX

Everybody is wired

3D in de digitale techniek is niets anders dan driehoekjes. Om het feit dat je hier eerder wiskundige berekening op los kunt laten.. En 2 driehoeken heb je een 4hoek (4kant, Rechthoek)

Als je een rondje wel hebben begint helemaal de pret.. Je moet dan meerdere driehoeken zo inelkaar rekenen dat er een ronde vorm vormt..

Ik geloof dat er voor quake3 een code is dat je alleen de lijnen zit.. Dan zul je zien dat alles met driehoeken zijn gedaan...

Hier heb je de kleinste basis van 3D.. 8-) , Wie vult mij aan *D :)

AKA Rinkel weblog


  • Primal
  • Registratie: Augustus 2001
  • Laatst online: 11-09 14:32
Op donderdag 13 september 2001 22:59 schreef DarkShadow het volgende:
Xit nu in de 6e en ik zou graag wat linkjes of uitleg willen over de wiskunde achter een 3d engine, helemaal van het begin af, dus niet in een keer een heel moeilijk tutorial. Tiz voor mn profielwerkstuk, samen met een andere jongen, en we hebben het hele jaar nog, maar je kan altijd beter vroeg beginnen.
We hebben allebei niet veel programmeer ervaring, maar we hebben eigenlijk ook alleen maar wiskunde nodig.
thx in advance
Het ligt uiteraard aan hoe diep je er in wilt duiken. Inderdaad komen matrixes en de daarbij behorende matrix-transformaties steeds terug. Hier kun je wel goede informatie over vinden op het Internet. Wil je je eigen ray-casting algoritme gaan schrijven, dan missen de meeste tutorials (de goede zijn toch best moeilijk te vinden) net de belangrijkste details (over ze zijn gekopieerd van een een andere tutorial en voegen niets nieuws toe :) ). Wil je dat algoritme gaan schrijven en je wilt echt dat alles 'from scratch' wordt uitgelegd, tja dan zou ik een boek aanschaffen in jullie geval.


Links:
-www.flipcode.com
-www.programmersheaven.com
-www.gamedev.net
-www.3dgamedev.com

eh ...


En zo heb ik mijn kleine inbreng ook gedaan. :)

"The fastest code, is the code that is never called."


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 13:51

Janoz

Moderator Devschuur®

!litemod

Trouwens, het belangrijkste item bij 3d engine's is niet hoe je iets tekent, maar wat teken je, en vooral, wat teken je niet!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


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

Scorpion

not to lame to read BitchX.doc

Op vrijdag 14 september 2001 08:18 schreef Janoz het volgende:
Bij een 3d engine heb je meer aan wiskunde dan aan programeer ervaring....
achja, was ff te snel... ik dacht dat ze een 3d engine wouden maken |:(

  • Tim Schuhmacher
  • Registratie: Januari 2000
  • Laatst online: 14:15

Tim Schuhmacher

abasios

misschien dat hier wat staat
http://freespace.virgin.net/hugo.elias/

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op vrijdag 14 september 2001 08:18 schreef Janoz het volgende:
Bij een 3d engine heb je meer aan wiskunde dan aan programeer ervaring....

BASICS

Waar je op moet letten zijn de transformaties. Er zijn een aantal basic transformaties (denk aan tekenprogramma). Deze zijn schalen, verplaatsen en draaien. Daarnaast is voor een 3d engine de perspectief transformatie ook een belangrijke.
Heb je gelijk in Janoz, misschien is het nog wat een inkopper om erachteraan te vermelden maar je doet de transformatie wel ergens op he.

Je moet sowieso uitgaan van een coordinatenstelsel, er zijn meerdere soorten coordinaten maar normaal gesproken zit je toch in een xyz-assenstelsel te werken.

Een object wordt vaak gedefinieerd als een verzameling punten in de 3D-ruimte ("vertices") verbonden door lijnen ("edges"). Een 3D-object wordt dus normaal gesproken ook opgeslagen als een verzameling vertices en edges. Het formaat waarin die edges staan opgeslagen kan varieren, zo zei hier eerder al iemand dat de modellen vaak uit driehoeken bestaan. Een handigheid hiervan is dat je de edges en vertices ook in zogenaamde "triangle-strips" en ook "triangle-fans" kan opslaan, wat een hoop opslagruimte bespaart. (hier valt vast ook veel over te vinden op i-net).

Tijdens het afbeelden van de objecten zelf zijn dingen als Hidden Surface Removal ook erg handig, je bepaalt welke dingen vanuit het perspectief van de kijker niet te zien zijn (de achterkant van een niet doorzichtig object bijvoorbeeld) zodat je de moeite kan besparen om die lijnen/vlakken af te beelden, wat het zaakje weer een stuk sneller maakt.

Een laatste tip: er zijn veel boeken over Computer Graphics en 3D, ik denk dat zoiets ook erg handig zou zijn

Succes

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -

Pagina: 1