April 20, 2024, 01:53:38 AM

News:

Own IWBasic 2.x ? -----> Get your free upgrade to 3.x now.........


Aurora's 3D engine

Started by Ionic Wind Support Team, July 12, 2006, 11:03:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

kryton9

Wow, you mean we just write our code and Aurora will handle wether it is directx for windows and open gl for linux. That is something I never heard of. That right there would make Aurora very unique wouldn't it? Once the word got out that you write with one source and it works on both platforms, that sure sounds like a winning sales point to me.

Zen

Well i just posted a new thread just to confirm that but i believe that its true. The way Pauls is designing the libraries should allow us to type the same code in linux and windows and it should do the same thing. Not just in 3D but in all aspects of Aurora.

Lewis

Ionic Wind Support Team

Direct Input class now works (for both 2D and 3D).  So we can have fast access to keyboards and joysticks.  Getting closer to the next update now.


declare import,timeGetTime(),int;

global sub main()
{
C3DScreen s;
C3DCamera c;
C3DMesh m;
C3DObject scene;
C3DLight light;
CDirectInput di;
float fadjust,fTarget;
//target 60FPS for camera movement
fTarget = 1.0f / /*FPS*/60.0f * 1000.0f;
fAdjust = 1.0f;

s.CreateWindowed(0,0,640,480,AWS_CAPTION|AWS_VISIBLE|AWS_SIZE,0,"3D Test - ESC exits",NULL,false);
di.Init(s);
s.CenterWindow();
c.Create(s);
c.Position(0,0,-150);
c.Orient(0,0,1,0,1,0);
c.SetBackPlane(500);

m.Load3DS(s,GetStartPath() + "media\defiant.3ds",true);
m.Scale(.2,.2,.2);
m.Position(0,-20,0);
m.Rotate(-22.5 * .01745,180 * .01745,0);
m.EnableLighting(true);
m.UseVertexColor(false);

light.Create(s,LIGHT_POINT,1);
light.Position(0,20,-150);
light.SetAttenuation(0,1/50.0,0);
light.SetSpecular(.5,.5,.5,1);
light.SetAmbient(.3,.3,.3,1);

scene.CreateScene(s);
scene.AddChild(light);
scene.AddChild(m);
int fps = 0;
int startTime;
do
{
startTime = timeGetTime();
//check for keys and move camera accordingly
IF di.KeyDown(DIK_UP)
c.Move(0.0f,.25f * fAdjust);
IF di.KeyDown(DIK_DOWN)
c.Move(0.0f,-.25f * fAdjust);
IF di.KeyDown(DIK_RIGHT)
c.Rotate(1*.01745 * fAdjust,0,0);
IF di.KeyDown(DIK_LEFT)
c.Rotate(-1*.01745 * fAdjust,0,0);
IF di.KeyDown(DIK_Z)
c.Rotate(0,0,-1 *.01745 * fAdjust);
IF di.KeyDown(DIK_X)
c.Rotate(0,0,1 *.01745 * fAdjust);
IF di.KeyDown(DIK_PRIOR)
c.Rotate(0,-1 *.01745 * fAdjust,0);
IF di.KeyDown(DIK_NEXT)
c.Rotate(0,1 *.01745 * fAdjust,0);
IF di.KeyDown(DIK_R)
c.LookAt(0,0,0);

s.Clear(RGBA(0,0,0,255));
s.BeginScene(c);
scene.Draw();
s.RenderText(0,10,"FPS:"+NumToStr(fps),RGBA(255,255,0,255));
fps = s.RenderScene();
fAdjust = (timeGetTime() - startTime) / fTarget;
}until di.KeyDown(DIK_ESCAPE);
Scene.Free();
}
Ionic Wind Support Team

Ionic Wind Support Team

Landscape (terrain) object at work.
Ionic Wind Support Team

Kale

Impressive stuff! :)

How are collisions going to be handled within Aurora's 3D engine? and will a physics engine such as ODE be included too?

Ionic Wind Support Team

Aurora uses opcode for mesh to mesh collisions.  Sphere and Ray are also available.

Haven't looked into a physics just yet ;)
Ionic Wind Support Team

Kale

Quote from: Paul Turley on July 17, 2006, 02:14:53 AM
Aurora uses opcode for mesh to mesh collisions.ÂÃ,  Sphere and Ray are also available.

Haven't looked into a physics just yet ;)

Very nice.

I'm definately planing to buy Aurora in the coming week. Once my book is finished (grammar checking last chapter) i will have more time to play. :)

Barney

Physics can wait until the 3D stuff is stable and full featured. I would prefer Ageia as it can use specialised hardware to accelerate all physics calculation. If hardware is absent software calculations will be used automatically.

Barney

Steven Picard

Quote from: Paul Turley on July 17, 2006, 02:14:53 AM
Aurora uses opcode for mesh to mesh collisions.ÂÃ,  Sphere and Ray are also available.

Haven't looked into a physics just yet ;)
Absolutely amazing work so far!!

I would love to see physics included along with rag doll technology like 3DImpact.  ;D

Kale

Quote from: Barney on July 17, 2006, 05:13:11 AM
Physics can wait until the 3D stuff is stable and full featured. I would prefer Ageia as it can use specialised hardware to accelerate all physics calculation. If hardware is absent software calculations will be used automatically.

Barney

The only trouble with supporting such new technology as the Ageia system, is that nobody has these cards yet and it may also be rendered obsolete overnight by Havok's new version 4 engine which utilizes the users current GPU for acceleration. Who knows.ÂÃ,  ;)

Shannara

Heh, I must be one of those people who prefer to keep subsystems in their respective components, etc. Thus I would love to see all physics using their PPU, while graphic cards use their GPU, and Sound cards SPU, and all else (am I missing something?), goes to the CPU..

Which reminds me ... DirectX10 or 11 comes with DirectPhysics .... .. :)
Love is staying up all night with a sick child, or a healthy adult.

Kale

Quote from: Sync on July 17, 2006, 02:06:42 PM
Thus I would love to see all physics using their PPU, while graphic cards use their GPU, and Sound cards SPU, and all else (am I missing something?), goes to the CPU..

Agreed, me too. But it depends how it's marketed to users (especially gamers). For example, would users prefer to keep their existing PC intact and have physics accelerated using their installed GPU? Or, be made to buy another card that will out perform the GPU when it comes to physics calculations but only if apps support it?

The Aegia PhysX card has impressive benchmarks, but will it take hold?

Betamax Vs VHS anyone?  ;)

The future will tell...

Shannara

That ... is an excellent observation ... all in marketing .. For gamers, I would assume (ack!) that they would want the physics on the graphics card. That way, only buy one card and your good to go. Plus now that motherboards have less slots, board real estate is a major concern.

But for 3d modellers such as those who use Maya or 3ds max .. would probably want it on a seperate card (if the software supports it), to help cut down on some of the physics calculations.

I agree with you, depending on how it's marketed.
Love is staying up all night with a sick child, or a healthy adult.

kryton9

The main thing is to get 3d capabilities. Basic physics can be programmed in and not that much of a concern. As one of you wrote earlier, most of us are going to write stuff to play ourselves or sell as an indie game, not out there to compete with the top games at major retailers.

I was wondering what the engine would support for models. I did tests with darkbasic pro as it supports x format and 3ds. I was able to do more with the x format than with 3ds, but of course 3ds is supported by almost all modeling packages without any additional plugins required, where as you need to get x format plugins for many of the top modeling programs.

When I made levels for unreal 2004 it was nice that it supported lightwave objects directly with no conversion. But newtek doesn't seem to care about the gaming industry that much it seems if you read the posts in their forums. The new serious sam 2 engine also supports lightwave directly from what I read, but have not tried out yet.

I was playing with 3d max and the panda exporter plugin and so far that seems to work really well.

But I find that max and lightwave are overkill and cost so much for indie game makers.

I was thinking of trying caligai's stuff as they seem so reasonably priced and gamespace seems to be made just for modeling things for games and supports so many of the common file types.
I had bought and used a very early version of truespace and it was lots of fun and very elegant interface. From the free videos on the site it looks like they are at the cutting edge still in terms of interface.

I don't know but maybe someone could start a thread about modeling as if we have 3d programming capabilities, being able to model and put stuff in our developments will be a key part.
I have no idea what opengl supports in terms of model formats for instance. Or what is used on that end. Maybe someone who knows more about this stuff as well as the programming part with Aurora could start out such a thread the right way.

I am really excited that Paul is going to get us something to play with 3d soon that is for sure!!

Ionic Wind Support Team

Currently there are loaders for .3ds, .x, skinned x, and MD2.  I do have code for MD3 to convert and code for supporting bsp.

Plus all of the primitive commands for creating basic and custom shapes directly.
Ionic Wind Support Team

kryton9

That's great Paul, thanks!!!

Ionic Wind Support Team

For the next update we'll have a 3D sprite class to play with too.  Still working out collision testing and such but it's nice to have hardware accelerated alpha modes.
Ionic Wind Support Team

Kale

Very nice! I've just recently bought Aurora and im impressed already, even in Alpha! :o

kryton9

Great to hear more cool things to look forward too!!

J B Wood (Zumwalt)

Dea aurora masters  ::)

Little old me am making my first little old game in 3d with chicken scratch.
Ok, so here is me delima, per say..

I place 1 3ds object into the world at 0,0,0 and the terrain at 0,0,0 you would 'assume' the lower left corner of the terrain which is 0,0,0 in my editor would match my object, which is 0,0,0 in my editor.

But my little object is above the terrain.. way above the terrain.
I am using Gamespace 1.6 for this little old test of mine.

Tonight when I get home, my little old self will post little old pictures :)
Or maybe the app itself, I dunno yet, one or the other, maybe both..

Thank you for doing this little old 3d its ROCKING fun..
And yet sublimly simple.

Ionic Wind Support Team

Glad your having fun ;)

Perhaps Gamespace is offsetting the 3DS local coordinates?  I'd have to see the mesh to be sure.
Ionic Wind Support Team

J B Wood (Zumwalt)

Here it is, what I have done so far, not much, but its playing around.
I have a shopping list of requests:

FromMemory options for everything that loads anything from the hard drive.
I want to clone objects into array's etc.
I know whats going on with the animation, you need to be able to start a mesh at key point and play through frames in the mesh file for each set of animation, etc. But THIS ROCKS

You have given me hope beyond hope for a 3d engine with the single basic release, you have no clue how happy I am!
You were well worth investing in!

Zen

Zumwalt, You are right, Aurora is well worth the investment, Since i have used it i have had nothing but fun whenever i come on the forums i get all excited when the "Updates and Announcements" icon is purple in the hope of new features or classes to play around with.

Your starting off good, i like the model you have in there, although some lighting needs to be added to see it from all sides, but i am sure you will get there. Unfortunatley i am no 3D expert, so i need to learn a lot about that too.

Nice example
Lewis

J B Wood (Zumwalt)

I generated the basic terrain in T.Ed, very basic, then I imported it into Gamespace 1.6, then I saved it as a 3DS file.
Second item is the robot, I cheated, I used a mesh I purchased for it, but it was there to prove the multi-tierd mesh with multiple textures and alpha's.
Soon as we get the coordinate system ironed out, I will create another map with an army of a multitude of creatures ranging for animals to humanoids, through machines all initially static to see what I can populate the world with and how much memory it eats.

But this truely is fun!
I want to become a affiliate!

kryton9

Zumwalt, nice. The guy who made that mech is really great at making those. I remember when I bought an early version of truespace I had also bought a book on it and he had some great animations of his mechs in there. I do know that on that model, the canopy for the cockpit should have glass panels. What I did was extracted the glass from the rest of the mech. Basically deleting anything that wasn't part of the glass and then saved the glass as a separate object. Then reload the mech and delete the areas where the glass is and save it as another name for just the mech. THen you bring in both objects, under aurora the glass would be a child of the mech body. Then you have separate control of its transparency and such, and since it is a child it will move with the mech body.

As far as the terrain, in gamespace(not sure, as haven't used it)  you should be able to make a subdivided plane (that is a plane with lots of faces or segments) and then add a displacement map to it that would give you a nice terrain. The more faces/segments the smoother your terrain will be, but of course your poly count will go up and effect any game also. THen you wouldn't have to import and export. Does Truespace allow you to paint directly on the model as Truespace does? Then you could really give some nice textures to your terrain.

I am glad you got gamespace as i am thinking of either getting the latest truespace or gamespace and gamespace sure would save some bucks. I wrote to Caligari and they said Truespace is their flagship product and allows you to do more and gamespace was more for use in games and well, like I sort of knew that, but they sort of skirted around my questions so that is why I hadn't made up my mind. It will be interesting to see what you come up with and if you see any limitations.

Yep if you looked at Paul's latest demo example it is really easy to see the power in Aurora all ready.