| Posted By
Csabo on 2019-06-20 17:41:39
| 3D Engine
If you have been following the forum, you've seen George detailing the progress of his 3D Engine. Today is the day, the first version of this project is finally released! Check out this YouTube video to see it in action, or download it and give it a shot. The release also includes a converter (PC executable) which converts OBJ files (e.g from Blender) into the necessary Plus/4 SEQ equivalents. The set of SEQ included will draw a space shuttle. Enjoy!
|
|
Posted By
MMS on 2019-06-25 16:49:50
| Re: 3D Engine
I follow George's activities and post here and on FB regarding the 3D Engine. Originally I had questionmarks, if it can really work. Then the limited number of floating point issue popped up.It is also solved. Then George came up with the method to hide the hidden surfaces, and the 3D models started to look stunning even on this low resolution.
I tough it should be something super complex method, but after viewing his great Youtube training (the auto-translate of subtitles from Germna to English works GREAT) it became clear, that this tool has similar great potentials as IstvanV's GFX converter You can freely rotate the 3D model saved from eg. Blender, a fantastic (and free!) 3D modeller, frequently used together with Unreal3 engine. So can create your own 3D model, or just download any free one, and modify/simplify it.
It is great, that the 3D Engine is made in BASIC. Even I can understand, how it works. Certainly drawing speed is limited then. (and cetainyl much smaller than the MC code of Elite, Mercenary, Castle Maseer, Driller, etc)
But hey, it is an 8 bit machine just little above 1MHz speed and runs in BASIC ! (and we know due to continuous RAM/ROM switches our machine works slower in BASIC, than C64, despite higher clock speed) Even the compiled code's speed is limted (I made a test with Austrospeed), as the DRAW and other GFX commands not supported (so again: RAM/ROM switching is required), so it is only 2-3x faster, and at the same time will limit the size of the3D objects (cutting a lot of free RAM)
I really find fascinating, that on our beloved 8 bit machine you can easily show a 3D model just made with the latest 3D modeller on a 64bit PC.
Final words: George's 3D Engine seems to be the best 3D engine on our machine ! (I tried now all the other ones, and meh (error codes, crashes or hardly useable))
Congratulations, George!
|
|
Posted By
George on 2019-06-24 17:19:51
| Re: 3D Engine
@MMS Thank you. You should do reviews in magazines. But i would go not so far say its the "best" or even compare it to other great tools.
I did a small tutorial on youtube, where i show how to use the engine in combination with blender https://youtu.be/9yp2uIUDPr0
Since its written in BASIC, the engine runs also on the commodore 128 without any changes. I tested it in Vice today. Thats why i did not code any specific plus/4 optimizations.
Here some further nice renderings i did duriing the development:
|
|
Posted By
SVS on 2019-06-25 02:20:33
| Re: 3D Engine
A very cool program! Awaiting for the Plus/4 dedicated version!
|
|
Posted By
George on 2019-06-27 17:43:03
| Re: 3D Engine
Thank you SVS!
Another secret feature of the engine is drawing in inverse mode. Which looks very interesting too. A second secret feature is to filter out faces of a certain size, in the case you run out of memory.
|
|
Posted By
MMS on 2019-06-29 02:50:56
| Re: 3D Engine
Wow, this filled vector monkey is very impressive! One question: if you filter out certain faces, the points' 3D coordinates are still in memory?
I wish we would have an FPU to able to rotate it in real time Floating point calculation is not the strongest part of the MOS6502 family though 8501 is one of the fastest in PI calcuilation, as per LITWR's benchmark. (also, the recently announced easy (!) 256KB RAM upgrade could become a very handy tool in your hands and i our hands to show )
|
|
Posted By
George on 2019-06-28 16:42:56
| Re: 3D Engine
Hi MMS,
yes, the points coordinates x,y,z (Dims) are always in memory and don't change. Dependig on the angles and scaling, the amount of visible faces varies. If you have many very small distant faces with small area (Variable AR in code), you can define the limit (line 1161) of the area of the faces (eg. smaller then 2 ignore) and they will be ignored. Thats how i was able draw the space-shuttle with boosters from behind.
The best way to improve speed will be assembler first. But i like the way the programm works as it is, because i enjoy rotating, scaling and shifting around to find the best angle possible and really enjoy the slow build up of the picture. I don't mind thats so slow...
|
|
Posted By
Verona on 2019-08-10 07:05:49
| Re: 3D Engine
It's awesome... Just awesome... And in BASIC...
|
|
Posted By
George on 2019-08-10 13:37:56
| Re: 3D Engine
Thanks Verona!
Dedicated to you:
|
|
| |
Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon |