[C# of C++]Een hele simple 3D engine

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
Hallo,

Ik ben van plan om een 3D engine te gaan maken, voordat iedereen begint met schreeuwen van "Onmogelijk", "Dat gaat je heel veel tijd kosten..." en al dat soort antwoorden. Weet ik dat het heel veel tij kost om dit te maken en het soms zware irritatie kan veroorzaken omdat het niet altijd wil lukken.

Maar toch wil het gaan proberen om een 3D engine te maken. Alleen heb ik wel een klein beetje hulp nodig.
Want kan ik een engine beter schrijven in C# of in C++ ?

Dan een volgende vraag, is er een tutorial om een simpele 3D engine te maken, met bijv. alleen een kubus die draait oid? Google heeft me helaas niet echt kunnen helpen.

[ Voor 3% gewijzigd door xehbit op 19-05-2010 15:41 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:58
Ik zou eerst beginnen bij het begin, en leren programmeren ...

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 03-09 11:04

mux

99% efficient!

Ik denk dat je helemaal geen reacties krijgt met 'onmogelijk' of 'dat gaat je heel veel tijd kosten', gezien het een van de bekendere vingeroefeningen is bij menig opleiding. Ik heb zelf from scratch 3D engines in javascript (puur html en SVG), op mijn ti-83, in Java en in C geschreven. Zelfs nog een rudimentaire (idd ronddraaiende kubus) op een microcontroller! Vele mensen zullen je dus voorgegaan zijn.

Wat zijn je plannen precies? Hardcoded heb je IMO niets aan tutorials nodig om even snel een simpele non-culling wireframe 3D engine te schrijven. Dat is echt heel simpel om te maken. Iets lastiger, maar ook niet moeilijk om zelf te bedenken is gekleurde vlakken en z-culling. Zodra je echter aan textures en lighting begint moet je écht de betere lineaire algebra gaan gebruiken en komen tutorials van pas.

Dus, wat was je eigenlijk van plan hiermee uiteindelijk te willen doen?

edit: ohja, kun je al overweg met deze talen, dus zowel het simpele lineaire programmeren als het bouwen van een tekenvenster en user interface-elementen?

[ Voor 8% gewijzigd door mux op 19-05-2010 15:45 ]

Youtube: PowerElectronicsBlog - Plank2 (4W computer)


Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 13:56

beany

Meeheheheheh

http://www.google.nl/sear...UTF-8&q=directx+tutorials

Tutorials zat te vinden. En als je OpenGL wil doen, verander je de zoekquery.

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 18:17

Exirion

Gadgetfetisjist

whoami schreef op woensdag 19 mei 2010 @ 15:41:
Ik zou eerst beginnen bij het begin, en leren programmeren ...
... want als je al niet eens kunt beslissen/beredeneren of je beter C++ of C# kunt gebruiken dan vrees ik het ergste.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
Ja, dat was ook nog even een vraag, word een engine gemaakt in D3D sdk's ?

Acties:
  • 0 Henk 'm!

  • Exirion
  • Registratie: Februari 2000
  • Laatst online: 18:17

Exirion

Gadgetfetisjist

Dragon707 schreef op woensdag 19 mei 2010 @ 15:47:
Ja, dat was ook nog even een vraag, word een engine gemaakt in D3D sdk's ?
Waarom ga je niet eerst een beetje de basis leren en je inlezen? Als je je een klein beetje verdiept in de materie dan kun je je vragen zelf al beantwoorden.

"Logica brengt je van A naar B, verbeelding brengt je overal." - Albert Einstein


Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 13:56

beany

Meeheheheheh

Dragon707 schreef op woensdag 19 mei 2010 @ 15:47:
Ja, dat was ook nog even een vraag, word een engine gemaakt in D3D sdk's ?
Misschien handiger om eens met een bestaande (open source) engine te beginnen. Kijken hoe het werkt en zo. Irrlicht, Ogre3D zijn prima uitgangspunten. Van Ogre3D weet ik dat er een .Net wrapper voor is. Je hebt dan dus de keuze: of in C++ of in .Net :)

Maar met een beetje zoekwerk zal je wel nog meer open source varianten vinden.

Of misschien is Unity3D wat voor je?

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
beany schreef op woensdag 19 mei 2010 @ 15:52:
[...]

Misschien handiger om eens met een bestaande (open source) engine te beginnen. Kijken hoe het werkt en zo. Irrlicht, Ogre3D zijn prima uitgangspunten. Van Ogre3D weet ik dat er een .Net wrapper voor is. Je hebt dan dus de keuze: of in C++ of in .Net :)

Maar met een beetje zoekwerk zal je wel nog meer open source varianten vinden.

Of misschien is Unity3D wat voor je?
Ik ben nu inderdaad even bezig met het bekijken van de IRRlicht engine. Beetje mee spelen, source bekijken, beetje aanpassen. Ik laat verder wel weten hoe het ervoor staat.

EDIT: Ik heb nu wel een klein probleempje met het compilen van de HelloWorld test

---------------------------
Microsoft Visual Studio
---------------------------
Unable to start program 'D:\irrlicht-1.7.1\examples\01.HelloWorld\.\Debug\01.HelloWorld_vc9.exe'.


Het systeem kan het opgegeven bestand niet vinden.


---------------------------
OK
---------------------------

Dat is best raar, want er staat in het bestandspad een '.' als map!! hoe kan dat nu weer gebeuren?

[ Voor 27% gewijzigd door xehbit op 19-05-2010 16:31 ]


Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 13:56

beany

Meeheheheheh

Misschien dat je voor support van de Irrlicht examples beter op het forum van Irrlicht terecht kan ?

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Een punt als map kan prima, dat is namelijk de huidige map. Oftewel: kan worden genegeerd in jou geval.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • Voxyn
  • Registratie: April 2009
  • Laatst online: 09-09 18:04
Dragon707 schreef op woensdag 19 mei 2010 @ 16:06:
[...]

Ik ben nu inderdaad even bezig met het bekijken van de IRRlicht engine. Beetje mee spelen, source bekijken, beetje aanpassen. Ik laat verder wel weten hoe het ervoor staat.

EDIT: Ik heb nu wel een klein probleempje met het compilen van de HelloWorld test

---------------------------
Microsoft Visual Studio
---------------------------
Unable to start program 'D:\irrlicht-1.7.1\examples\01.HelloWorld\.\Debug\01.HelloWorld_vc9.exe'.


Het systeem kan het opgegeven bestand niet vinden.


---------------------------
OK
---------------------------

Dat is best raar, want er staat in het bestandspad een '.' als map!! hoe kan dat nu weer gebeuren?
En als je het project nou op een andere locatie opslaat en dan van die locatie opent en dan weer compiled? werkt het dan wel?

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
krijg ook deze 2 warning's (sorry over het hoofd gezien:$)

Warning 1 warning MSB8012: TargetPath(D:\irrlicht-1.7.1\examples\HelloWorld\.\Debug\01.HelloWorld_vc9.exe) does not match the Linker's OutputFile property value (D:\irrlicht-1.7.1\bin\Win32-VisualStudio\01.HelloWorld.exe). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 990 6 01.HelloWorld_vc9
C++:
1
<VCMessage Condition="'%(_OutputFileFromLink.FullPath)' != '$([System.IO.Path]::GetFullPath($(TargetPath)))'" Code="MSB8012" Type="Warning" Arguments="TargetPath;$(TargetPath);Linker;%(_OutputFileFromLink.FullPath);Link"/>


Warning 2 warning MSB8012: TargetName(01.HelloWorld_vc9) does not match the Linker's OutputFile property value (01.HelloWorld). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile). C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 992 6 01.HelloWorld_vc9
C++:
1
<VCMessage Condition="'%(_OutputFileFromLink.Filename)' != '$(TargetName)'" Code="MSB8012" Type="Warning" Arguments="TargetName;$(TargetName);Linker;%(_OutputFileFromLink.Filename);Link"/>

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik kan alleen maar whoami en Exirion beamen; als je niet eens zélf kunt besluiten of je in C++ of C# een 3D Engine wil gaan schrijven (of dit soort vragen stelt), laat staan simpele foutmeldingen kunt interpreteren dan is de materie simpelweg nog te hoog gegrepen voor je; dat is geen schande; we zijn allemaal ooit ergens begonnen. Maar dat neemt niet weg dat je dus wel even wat programmeerkennis onder je gordel moet krijgen; begin dan ook eens met wat simpelere zaken. Schrijf een GMail notifier ofzo :+
We zitten hier niet om handjes te houden, foutmeldingen die prima op te lossen zijn voor je op te lossen of support te verlenen op 3rd party producten.
.oisyn schreef op woensdag 19 mei 2010 @ 17:32:
[...]

Sorry hoor, maar een ronddraaiende kubus maakt nog geen 3D engine. Iets dat wat 3D API calls doet ook niet :)
Afhankelijk van je definitie van "3D engine" natuurlijk (ik denk dat TS namelijk doelt op iets anders) maar inderdaad bij lange na niet.

[ Voor 33% gewijzigd door RobIII op 19-05-2010 17:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

ssj3gohan schreef op woensdag 19 mei 2010 @ 15:44:
Ik denk dat je helemaal geen reacties krijgt met 'onmogelijk' of 'dat gaat je heel veel tijd kosten', gezien het een van de bekendere vingeroefeningen is bij menig opleiding. Ik heb zelf from scratch 3D engines in javascript (puur html en SVG), op mijn ti-83, in Java en in C geschreven. Zelfs nog een rudimentaire (idd ronddraaiende kubus) op een microcontroller! Vele mensen zullen je dus voorgegaan zijn.
Sorry hoor, maar een ronddraaiende kubus maakt nog geen 3D engine. Iets dat wat 3D API calls doet ook niet :). Een 3D engine is een framework, en dat maken kost behoorlijk wat tijd, en gaat je niet lukken zonder basiskennis programmeren en wat ervaring met bestaande engines.
RobIII schreef op woensdag 19 mei 2010 @ 17:25:
Afhankelijk van je definitie van "3D engine" natuurlijk (ik denk dat TS namelijk doelt op iets anders) maar inderdaad bij lange na niet.
Tja, je kan een functie die een waarde bij een andere optelt ook wel een additive engine noemen, maar of je dan serieus wordt genomen is een tweede...

[ Voor 31% gewijzigd door .oisyn op 19-05-2010 17:48 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • mux
  • Registratie: Januari 2007
  • Laatst online: 03-09 11:04

mux

99% efficient!

.oisyn schreef op woensdag 19 mei 2010 @ 17:32:
[...]

Sorry hoor, maar een ronddraaiende kubus maakt nog geen 3D engine. Iets dat wat 3D API calls doet ook niet :). Een 3D engine is een framework, en dat maken kost behoorlijk wat tijd, en gaat je niet lukken zonder basiskennis programmeren en wat ervaring met bestaande engines.
Hmhm, natuurlijk, maar ik probeerde in de lijn van wat de TS leek te bedoelen te antwoorden. Dat soort dingen worden bij bosjes geproduceerd door middelbare-schoolstudenten, en ook door mij. Als je het al iets zou moeten noemen, is het hoogstens een soort 'introductie in lineaire algebre geimplementeerd in en computerprogramma' ofzo.

Jammer dat m'n java-projectjes verloren zijn gegaan door de jaren heen, die kon NURBS importeren en software T&L doen...

Youtube: PowerElectronicsBlog - Plank2 (4W computer)


Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Dat ligt nogal aan je definitie van een engine. Voor mij gaat dat toch tenminste een scenegraph/spatial structure en een enigzins intelligente renderer bevatten (culling/passes) + logica voor camera/lighting etc. Daarnaast heb je nog een resource manager die modelen/meshes, materials/shaders en textures etc kan inladen, uitladen en beheren (restore on device loss etc).

Een loopje om een IDirect3DDevice9::Draw*() is NIET een engine wat mij betreft ;)

-niks-


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Dat is precies hoe ik er ook over denk :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 11:35
.oisyn schreef op woensdag 19 mei 2010 @ 17:32:
en gaat je niet lukken zonder basiskennis programmeren en wat ervaring met bestaande engines.
Dan had de maker van de eerste 3D engine een serieus probleem.

Een stuk serieuzer dan de inhoud van deze post zeg maar.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Tja het schrijven van een engine... Inderdaad, als je geen kubus kan laten roteren: onmogelijk.
Ik speel zelf nu een jaar of 2 a 3 in XNA en ManagedDX en ik ben níet in staat om een engine te schrijven.
Ondertussen heb ik best een leuke codebase opgebouwd over bepaalde onderwerpen (vooral planet rendering), maar het zijn nog steeds allemaal losse systemen, die je best wel kunt combineren. Maar dat maakt het geen engine!
Het zijn losse 'programma's' die niks met elkaar kunnen communiceren.

Wil je een engine schrijven dan zul je dus een aantal dingen moeten hebben:
1. Een flinke code-base.
2. heel wat kennis over bepaalde structuren (quadtree's, octree's)
3. HEEL wat onderzoek doen naar hoe je je engine wilt laten functioneren: Messaging/pipelines/enzovoort.

Wat je echter WEL kunt gaan doen is gewoon beginnen met 3d programming en kijken hoever je komt. Het is veel meer werk dan je je nu beseft. Het is niet meer alleen kennis over c# of c++ of wat dan ook. Er komt een wezelijke hoeveelheid natuurkunde en wiskunde bij kijken. Vectors, matrices, quaternions, om er maar een paar te noemen...
ZpAz schreef op woensdag 19 mei 2010 @ 21:59:
[...]


Dan had de maker van de eerste 3D engine een serieus probleem.

Een stuk serieuzer dan de inhoud van deze post zeg maar.
Onzin! Voor 3d had je 2d en voor 2d had je programma´s. Iets wordt niet van de een op de andere dag uitgevonden! De allereerste games kenden de definitie engine niet eens. Een engine is ook alleen handig als je er méér mee wilt doen dan een game maken. Een engine is niks meer dat een framework met heel veel source en mogelijkheden waarmee je een spel kunt maken.

[ Voor 27% gewijzigd door Mischa_NL op 19-05-2010 22:10 ]


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
snip: was al gezeged.


Zoals de TS aangeeft bedoelt hij met een 3D engine een paar API calls om een kubus te laten roteren, we weten allemaal wel dat het een echte 3D engine veel meer is dan dat, maar laten we de definitie voor de TS even verleggen naar wat hij graag wil.

(Verder denk ik dat een bestaande 3D engine uitpuzzelen misschien wel moeilijker is dan gewoon wat tutorials voor DX / XNA te volgen om op die manier een kubus op het scherm te krijgen)

[ Voor 69% gewijzigd door roy-t op 20-05-2010 08:19 ]

~ Mijn prog blog!

Pagina: 1