December 03, 2020, 12:44:53 pm

News:

IonicWind Snippit Manager 2.xx Released!  Install it on a memory stick and take it with you!  With or without IWBasic!


Just to get things started

Started by barry, August 26, 2007, 09:31:09 am

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

barry

I felt like someone should say something to get things going in here.

I haven't had a chance to do anything with the 3D yet, other than to try out the samples.  They all work fine.

Has anyone taken a closer look and found that you can, or can't, use the Aurora 3D docs with EBasic's 3D?  Hopefully they'll get me started till the regular docs are available.

I did find that by putting a copy of the Aurora 3D help into the EBasic help folder and renaming it to 3dguide.chm the Ebasic help item will call them up.  But I haven't had a chance to see if they actually correspond to what I see in the samples yet.

Barry

ts-soft

   
The Aurora 3D assistance should be sufficient for the time being. I have also no Aurora knowledge, however one of the missing examples to eBasic translated, without problems in few minutes.

"test_lights.eba"
Code Select
'Arrow keys to move camera.
'PgUp/PgDn to pan up and down.
'Z and X to rotate on Z axis.

'$Define FULLSCREEN

Declare Import, Sleep (dwMilliseconds:INT)
Declare Import, timeGetTime(),INT

CONST DIK_UP = 0xC8 /* UpArrow on arrow keypad */
CONST DIK_PRIOR = 0xC9 /* PgUp on arrow keypad */
CONST DIK_LEFT = 0xCB /* LeftArrow on arrow keypad */
CONST DIK_RIGHT = 0xCD /* RightArrow on arrow keypad */
CONST DIK_END = 0xCF /* End on arrow keypad */
CONST DIK_DOWN = 0xD0 /* DownArrow on arrow keypad */
CONST DIK_NEXT = 0xD1 /* PgDn on arrow keypad */
CONST DIK_Z = 0x2C
CONST DIK_X = 0x2D
CONST DIK_R = 0x13
CONST DIK_ESCAPE = 0x01

C3DScreen s
C3DCamera c
C3DMesh m
C3DObject scene, trans
C3DLight light

FLOAT fadjust, fTarget

'target 60FPS for camera movement
fTarget = 1.0f / /*FPS*/60.0f * 1000.0f
fAdjust = 1.0f

$IfDef FULLSCREEN
s.CreateFullScreen(800, 600, 32, True)
$Else
s.CreateWindowed(0, 0, 800, 600, @CAPTION|@SIZE, "Light Example - ESC exits", NULL, False)
$EndIf

c.Create(s)
c.Position(0, 0, -10)
c.Orient(0, 0, 1, 0, 1, 0)
c.SetBackPlane(10000)

s.Clear(RGBA(0, 0, 0, 255))
s.BeginScene(c)
s.RenderText(0, 10, "Loading objects...", RGBA(255, 255, 0, 255))
s.RenderScene()

m.CreateSphere(s, 25, 2, false)
m.EnableLighting(true)

trans.CreateTransform(s)
light.Create(s, LIGHT_SPOT, 1)
light.Position(0, 0, -120)
light.SetAttenuation(0, 1/100.0, 0)
trans.AddChild(light)

scene.CreateScene(s)
scene.AddChild(trans)
scene.AddChild(m)

INT fps : fps = 0
INT startTime

Do

startTime = timeGetTime()
'check for keys and move camera accordingly
If KeyDown(DIK_UP) Then _
c.Move(0.0f, 1f * fAdjust)
If KeyDown(DIK_DOWN) Then _
c.Move(0.0f, -1f * fAdjust)
If KeyDown(DIK_RIGHT) Then _
c.Rotate(1 * .01745 * fAdjust, 0, 0)
If KeyDown(DIK_LEFT) Then _
c.Rotate(-1 * .01745 * fAdjust, 0, 0)
If KeyDown(DIK_Z) Then _
c.Rotate(0, 0, -1 *.01745 * fAdjust)
If KeyDown(DIK_X) Then _
c.Rotate(0, 0, 1 * .01745 * fAdjust)
If KeyDown(DIK_PRIOR) Then _
c.Rotate(0, -1 * .01745 * fAdjust, 0)
If KeyDown(DIK_NEXT) Then _
c.Rotate(0, 1 * .01745 * fAdjust, 0)
If KeyDown(DIK_R) Then _
c.LookAt(0, 0, 10000)

s.Clear(RGBA(128, 128, 128, 255))
s.BeginScene(c)
trans.Rotate(0, timeGetTime()/1000.0f, 0)
scene.Draw()
s.RenderText(0, 10, "FPS:" + Str$(fps), RGBA(255, 255, 0, 255))
s.RenderText(0, 30, "Use arrow keys to move around", RGBA(255, 255, 0, 255))
fps = s.RenderScene()
fAdjust = (timeGetTime() - startTime) / fTarget

$IFNDEF FULLSCREEN
Sleep(5)
$ENDIF

Until KeyDown(DIK_ESCAPE)

Scene.Free()


greetings
Thomas

(translated with google  :-[
Sorry for my bad english

Ionic Wind Support Team

Conversion is relatively easy.  The class methods are identical, it is just the syntax and built in commands that are different.

Generally speaking you have to:

1.  Remove the main() { } tags from around the code
2.  Remove all ';' and combine lines if necessary.
3.  Change all // to '
4.  Rename command names, like NumToStr to STR$
5. Remove { } from other blocks, adding ENDWHILE, ENDIF, etc as needed.
6. Convert pointer syntax to Emergence if needed....

m->Rotate(0,timeGetTime() / 1000.0f,0);

becomes

*<C3DMesh>m.Rotate(0,timeGetTime() / 1000.0f,0)

Paul.
Ionic Wind Support Team

Brian

Hi,

I get this message when trying to compile custom_mesh from the 3d examples:

Compiling...
custom_mesh.eba
No Errors

Linking...
Emergence Linker v1.11 Copyright ÂÃ,© 2006 Ionic Wind Software
Unresolved external _window_list
Error: Unresolved extern _window_list
Error(s) in linking C:\Program Files\EBDev\projects\3D samples\custom_mesh.exe

Brian

Brice Manuel

Are you SURE you are selecting a Windows EXE as the compile target?

Brian

Whoops - egg on face! OK now, thanks Bryce

Brian

Brice Manuel

Quote from: Brian Pugh on August 27, 2007, 12:17:27 pm
Whoops - egg on face! OK now, thanks Bryce

Brian
Don't sweat it.  Anybody who says they never made that same mistake is lying.  We have all done it.   ;D

LarryMc

I've NEVER done that!
Well....maybe once.... :o
or twice...... ::)
or a bunch of times. :'(

Larry
LarryMc
Larry McCaughn :)
Author of IWB+, Custom Button Designer library, Custom Chart Designer library, Snippet Manager, IWGrid control library, LM_Image control library

J B Wood (Zumwalt)

I've done it almost every time.
I say almost because when I haven't done it is when I was in something else at the time.
Granted, I am a klutz.

barry

I do it all the time, too.  It would sure be nice to have a directive in the file to handle that.

Barry

pistol350

QuoteConversion is relatively easy.  The class methods are identical, it is just the syntax and built in commands that are different.

Generally speaking you have to:

1.  Remove the main() { } tags from around the code
2.  Remove all ';' and combine lines if necessary.
3.  Change all // to '
4.  Rename command names, like NumToStr to STR$
5. Remove { } from other blocks, adding ENDWHILE, ENDIF, etc as needed.
6. Convert pointer syntax to Emergence if needed....

m->Rotate(0,timeGetTime() / 1000.0f,0);

becomes

*<C3DMesh>m.Rotate(0,timeGetTime() / 1000.0f,0)

Paul.


I am sure that somebody is thinking about writing a quick converter from Aurora to Ebasic syntax as (Bevets, I think) did for Ibasic std to Ibasic pro.

PS : RIP Steeve  :-[

Regards!
Peter
Regards,

Peter B.