Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
111 user(s) are online (100 user(s) are browsing Forums)

Members: 0
Guests: 111

more...

Support us!

Headlines

 
  Register To Post  

(1) 2 »
AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
Hi All,

I get good progress on the engine.
I've added several features.
Of course they are not final and may change with the evolution of the engine but they still work :)

I have added :
- Multi camera support ( Up to 8 cameras )
- OpenGL lights (need to fix light 0 issue)
- Objects instancies (share mesh and texture)
- Load/save 3D objects.
- Compatibility with object/camera position/rotation & command set.

Here is a small shot of the actual demo :
Resized Image

EDIT:
Voici le code source de cette d?mo :
float XAngle 0.0;

void DarkLoopvoid ){
  
DESetDisplayMode64048032 );
  
DECls();

  
DELoadImage"Images/x4.png");
  
DEMakeObjectBox15.05.05.0 );
  
DELoadObject"cube.deo");
  
DEPositionObject10.00.010.0 );
  
DEColorObjectEx1255255255 );
  
DETextureObject1);  
  
DESaveObject"cube.deo");

  
DEMakeObjectBox25.05.05.0 );
  
DEPositionObject20.05.0, -10.0 );
  
DEColorObjectEx22550);
  
//  DEMakeObjectBox( 3, 5.0, 5.0, 5.0 );
  
DELoadObject"cube.deo");
  
DEPositionObject310.00.00.0 );
  
DEColorObjectEx30255);
  
  
DEInstanceObject4);
  
DEPositionObject4, -100.00.0 );
  
DEColorObjectEx400255 );
  
  
DELoadImage"Images/Background.png");
  
DEMakeObjectBox5512512512 );
  
DESetObjectCull5);
  
DETextureObject5);

  
DEMakeLight);
  
DEColorLightEx0255255255 );
  
DEPositionLight00.020.00.0 );

  
DEMakeLight);
  
DEPositionLight15.030.00.0 );
  
DEColorLightEx12550255 );
  
DESetLightRange14096.0f );


  
DEMakeCamera);
  
DEPositionCameraEx10.00.00.0 );
  
DERotateCameraEx10.00.00.0 );
  
  
DEMakeCamera);
  
DEPositionCameraEx20032 );
  
DERotateCameraEx24545);
  
DESetCameraRangeEx20.14096 );

  
DESetCameraViewEx100320240 );
  
DESetCameraViewEx23200640240 );
  
DESetCameraViewEx0320240640480 );
  
  while( !
DELoop() ){
    
XAngle XAngle 0.25;
    
DERotateObject1XAngle 2.0XAngle0.0 );
    
DERotateObject40.0 - ( XAngle 2.0 ), 0.0 XAngle0.0 );
    
DERotateCameraEx00.0XAngle0.0 );

    
DESync();
   }
 }


Regards,
Fred

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Just can't stay away
Just can't stay away


See User information
@freddix

congratulations !

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
Looks good

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix

Congratulations with your progress.

My one suggestion would be to make functions such as DERotateObject() cumulative. Right now, it looks like you're resetting the orientation each time and then rotating it by a new angle (unless you've got the box rotation speeds increasing every frame). When you write a game or world simulation, you generally want to move (including rotation) objects from where they are to a new position based on their speed. This is much easier to do if you can just call DERotateObject(4, deltaTheta, deltaSigma, deltaPhi), or something similar, where "delta" means the change in angle, rather than the new angle. You could always have a DEResetPosition() method if someone wishes to track the angles externally to the object.

Hans

Join Kea Campus' Amiga Corner and support Amiga content creation
https://keasigmadelta.com/ - see more of my work
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Just popping in
Just popping in


See User information
@Freddix
Happy to see that your project is progressing well, congratulations!

@Hans
Maybe Freddix can add a flag at the end of the command to set the relative or absolute movement, something like:

DERotateObject(4, x, y, z [, relative])

<relative> could be true by default

--| Allanon |----
Amiga 1200 // WinUAE // Windows // Linux
>> My personal web site
>> My Patreon page
>> My GitHub page
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@Allanon & Hans:
Hi and thank for your comments.

In fact, I will only use direction rotation values.
But there will be these commands:
ROTATE OBJECT ROTATE OBJECT Object NumberXAngleYAngleZAngle
MOVE OBJECT 
MOVE OBJECT Object NumberSpeed
POINT OBJECT 
POINT OBJECT Object NumberXYZ
MOVE OBJECT DOWN 
MOVE OBJECT DOWN Object NumberValue
MOVE OBJECT LEFT 
MOVE OBJECT LEFT Object NumberValue
MOVE OBJECT RIGHT 
MOVE OBJECT RIGHT Object NumberValue
MOVE OBJECT UP 
MOVE OBJECT UP Object NumberValue
XROTATE OBJECT 
XROTATE OBJECT Object NumberXAngle
YROTATE OBJECT 
YROTATE OBJECT Object NumberYAngle
ZROTATE OBJECT 
ZROTATE OBJECT Object NumberZAngle
TURN OBJECT LEFT 
TURN OBJECT LEFT Object NumberValue
TURN OBJECT RIGHT 
TURN OBJECT RIGHT Object NumberValue
PITCH OBJECT UP 
PITCH OBJECT UP Object NumberValue
PITCH OBJECT DOWN 
PITCH OBJECT DOWN Object NumberValue
ROLL OBJECT LEFT 
ROLL OBJECT LEFT Object NumberValue
ROLL OBJECT RIGHT 
ROLL OBJECT RIGHT Object NumberValue

so it will be possible to rotate direction object with angle or by altering the actual angle.

Regards,
Fred

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@All

Hi All,

I've made a custom convertion tool on PC with DarkBASIC Professional
and I've converted my 1 st 3D Object from PC to Amiga.

I had done some sort of "import" functions.
Of course, once the object is loaded in the engine, it can be saved with :
DESaveObject( char * FileName, int ObjectID );
So the object is exported to the AmiDARK Engine 3D Object format :)

Here is the snapshot link :
http://www.odyssey-creators.com/AmiDE_Imported3D_1.jpg

I've put it as a link because it is large [ 1280x1024 pixels ]

Regards,
Fred

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@freddix

Very nice.

Keep up with the good work.

It is possible to implement filters? Bilinear filtering, antialiasing and os on...?


thank you
Best regards

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix
Sorry, at moment i know nothink about that Engine, can you explain a bit more about that project ? It's 3d engine which will allow other coders make their 3d prods by easy way ? (like some kind of Demo-machine ?) Or it's somethink different ? And maybe any beta-alpha binary are possible to test ?:)

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@AmigaBlitter :
Yes it is planed.

@kas1e:
AmiDARK Engine is similar to DarkGDK from thegamecreators : http://gdk.thegamecreators.com/
It is a SDK to help develop video game easily using OpenGL/AHI,etc ... It should cover many commands set like the ones available in DarkGDK. I should advice you to get alook at the link given upper. It should give you an overview of what kind of Product AmiDARK Engine will be.

Concerning Alpha/Beta binaries to test, it is also planed. I will release soonly a small 3D demo showing the various AmiDARK Engine commands actually working.

Concerning Beta testing it is also planed but it will only start when the project will be more advanced. Beta tester will have to sign an NDA (Non Disclosure Agreement) if they want to be ~.

I hope I've answered every one.

I'll keep you informed

Here is a small list of all commands actually available and working :

Basic2D:
static 
void DEClsvoid );
static 
void DEInkint ForeGroundcolorint BackgroundColor );
static 
void DEDotint Xint Y );
static 
void DEBoxint Leftint Topint Rightint Bottom );
static 
void DELineint X1int Y1int X2int Y2 );
static 
void DECircleint Xint Yint Radius );
static 
void DEElipseint Xint Yint XRadiusint YRadius );
static 
int DERgbint RedValueint GreenValueint BlueValue );
static 
int DERgbRint RGBColor );
static 
int DERgbGint RGBColor );
static 
int DERgbBint RGBColor );
static 
void DEDotExint Xint Yint RGBColor );
static 
void DEClsExint ClearColor );
static 
void DESetYAxisToDefaultvoid );
static 
void DEReverseYAxisvoid );


Basic3D:
static 
void DEMakeObjectBoxint ObjectIDfloat Xfloat Yfloat Z );
static 
void DEMakeObjectCubeint ObjectIDfloat Width );
static 
void DEMakeObjectTriangleint ObjectIDfloat X1float Y1float Z1float X2float Y2float Z2float X3float Y3float Z3 );
static 
void DEInstanceObjectint ObjectIDint SourceObject );
static 
void DEDeleteObjectint ObjectID );
static 
void DEDeleteObjectsint ObjectID1int ObjectID2 );
static 
void DEPositionObjectint ObjectIDfloat XPosfloat YPosfloat ZPos );
static 
void DERotateObjectint ObjectIDfloat XRotfloat YRotfloat ZRot );
static 
void DESetObjectRotationXYZint ObjectID );
static 
void DESetObjectRotationZYXint ObjectID );
static 
void XRotateObjectint ObjectIDfloat XAngle );
static 
void YRotateObjectint ObjectIDfloat YAngle );
static 
void ZRotateObjectint ObjectIDfloat ZAngle );
static 
void DEColorObjectExint ObjectIDint RGBRint RGBGint RGBB );
static 
int DEObjectExistint ObjectID );
static 
void SetObjectint ObjectIDBOOL WireFrameBOOL TransparentBOOL Cull );
static 
void SetObjectExint ObjectIDBOOL WireFrameBOOL TransparentBOOL Cullint Filter );
static 
void SetObjectEx2int ObjectIDBOOL WireFrameBOOL TransparentBOOL Cullint FilterBOOL Light );
static 
void SetObjectEx3int ObjectIDBOOL WireFrameBOOL TransparentBOOL Cullint FilterBOOL LightBOOL Fog );
static 
void SetObjectEx4int ObjectIDBOOL WireFrameBOOL TransparentBOOL Cullint FilterBOOL LightBOOL FogBOOL Ambient );
static 
int DEObjectExistint ObjectID );
static 
float DEObjectPositionXint ObjectID );
static 
float DeObjectPositionYint ObjectID );
static 
float DEObjectPositionZint ObjectID );
static 
float DEObjectAngleXint ObjectID );
static 
float DEObjectAngleYint ObjectID );
static 
float DEObjectAngleZint ObjectID );
static 
void DETextureObjectint ObjectIDint ImageID );


Camera:
static 
void DEPositionCamerafloat XPosfloat YPosfloat ZPos );
static 
void DERotateCamerafloat XAnglefloat YAnglefloat ZAngle );
static 
void DEXRotateCamerafloat XAngle );
static 
void DEYRotateCamerafloat YAngle );
static 
void DEZRotateCamerafloat ZAngle );
static 
void DESetCameraRangeint NearValueint FarValue );
static 
void DESetCameraViewint Leftint Topint Rightint Bottom );
static 
void DESetCameraRotationXYZ();
static 
void DESetCameraRotationZYX();
static 
void DESetCameraFovfloat fieldOfViewAngle );
static 
void DEAutocamON();
static 
void DEAutocamOFF();
static 
void DEBackdropOn();
static 
void DEBackdropOff();
static 
void DEColorBackdropint RGBColor );
static 
void DEColorBackdropExint iIDint dwColor );
static 
float DECameraPositionX() ;
static 
float DECameraPositionY() ;
static 
float DECameraPositionZ() ;
static 
float DECameraAngleX() ;
static 
float DECameraAngleY() ;
static 
float DECameraAngleZ() ;
static 
void DEMakeCameraint CameraID );
static 
void DEDeleteCameraint CameraID );
static 
void DESetCurrentCameraint CameraID );
static 
void DEPositionCameraExint CameraIDfloat XPosfloat YPosfloat ZPos );
static 
void DERotateCameraExint CameraIDfloat XAnglefloat YAnglefloat ZAngle );
static 
void DEXRotateCameraExint CameraIDfloat XAngle );
static 
void DEYRotateCameraExint CameraIDfloat YAngle );
static 
void DEZRotateCameraExint CameraIDfloat ZAngle );
static 
void DESetCameraRangeExint CameraIDfloat NearValuefloat FarValue );
static 
void DESetCameraViewExint CameraIDint Leftint Topint Rightint Bottom );
static 
void DESetCameraRotationXYZExint CameraID );
static 
void DESetCameraRotationZYXExint CameraID );
static 
void DESetCameraFovExint CameraIDfloat FieldOfViewAngle );
static 
void DEBackdropOnExint CameraID );
static 
void DEBackdropOffExint CameraID );
static 
float DECameraPositionXExint CameraID );
static 
float DECameraPositionYExint CameraID );
static 
float DECameraPositionZExint CameraID );
static 
float DECameraAngleXExint CameraID );
static 
float DECameraAngleYExint CameraID );
static 
float DECameraAngleZExint CameraID );


Core :
static 
void DESync();
static 
void DESetCursorint XPosint YPos );
static 
void DEPrint( const charZeStr );
static 
void DERandomizeint Value );


File:
static 
void DEOpenToReadint ChannelID, const char *FileName );
static 
void DEOpenToWriteint ChannelID, const char *FileName );
static 
void DECloseFileint ChannelID );
static 
WORD DEReadWordint ChannelID );
static 
float DEReadFloatint ChannelID );
static 
void *DEReadStringint ChannelID );
static 
void DEWritewordint ChannelIDWORD ValueToInsert );
static 
void DEWriteLongint ChannelIDint ValueToInsert );
static 
void DEWriteFloatint ChannelIDfloat ValueToInsert );
static 
void DEWriteStringint ChannelID, const char ValueToInsert );
static 
int DEFileOpenedint FileID );
static 
void DEFileOpenToReadint ChannelID, const char *FileName );
static 
void DEFileOpenToWriteint ChannelID, const char *FileName );
static 
void DEWriteToFileint ChannelIDvoid *MemoryPointerint BytesSize );
static 
void DEReadFileint ChannelIDvoid *MemoryPointerint BytesSize );
static 
int DEReadLongint ChannelID );
static 
int DEReadIntint ChannelID );
static 
void DEWriteIntint ChannelIDint ValueToInsert );
static 
void DEFileCloseint ChannelID );
static 
int DENextFreeFilevoid );
static 
int DEGetFileSizeint ChannelID );
static 
void DEMakeMemblockFromFileExint MemblockID, const char *FileName );


Image:
static 
void DELoadImage( const char FileNameint ImageIndex );
static 
void DELoadImageEx( const char FileNameint ImageIndexint ImageMode );
static 
void DEPasteImageint ImageIDint Xint Y );
static 
void DEPasteImageExint ImageIndexint Xint Yint Transparency );
static 
void DEDeleteImageint ImageIndex );
static 
int DEImageExistint ImageIndex );
static 
int DEImageWidthint ImageID );
static 
int DEImageHeightint ImageID );


Input:
static 
BOOL DEEscapeKeyvoid );
static 
int DEMouseXvoid );
static 
int DEMouseYvoid );
static 
int DEMouseZvoid );
static 
BOOL DEMouseClickint MButton );
static 
int DEMouseMoveXvoid );
static 
int DEMouseMoveYvoid );
static 
int DEMouseMoveZvoid );


Lights 3D ):
static 
void DEMakeLightint LightID );
static 
void DEDeleteLightint LightID );
static 
void DESetLightRangeint LightIDfloat LDistance );
static 
void DEPositionLightint LightIDfloat XPosfloat YPosfloat ZPos );
static 
void DEColorLightint LightIDint RGBColor );
static 
void DEColorLightExint LightIDint RGBRint RGBGint RGBB );
static 
void DESetAmbientColorint RGBColor );
static 
void DEFogONvoid );
static 
void DEFogOFFvoid );
static 
void DEFogColorint RGBValue );
static 
void DEFogColorExint FREDint FGREENint FBLUE );
static 
void DEFogDistanceint Distance );
static 
void DESetAmbientColorExint RGBRint RGBGint RGBB );
static 
void DEFogStartint FSTART );
static 
void DEFogDensityint FDENSITY );
static 
void DEFogModeint FMODE );


Memblock:
static 
void DEMakeMemblockint MemblockIDint MBCSize );
static 
void DEDeleteMemblockint MemblockID );
static 
int DEMemblockExistint MemblockID );
static 
void *DEGetMemblockPTRint MemblockID );
static 
int DEGetMemblockSizeint MemblockID );
static 
void DEWriteMemblockByteint MemblockIDint MemblockPOSBYTE VALUE );
static 
BYTE DEMemblockByteint MemblockIDint MemblockPOS );
static 
void DEWriteMemblockWordint MemblockIDint MemblockPOSWORD VALUE );
static 
WORD DEMemblockWordint MemblockIDint MemblockPOS );
static 
void DEWriteMemblockDWordint MemblockIDint MemblockPOSint VALUE );
static 
int DEMemblockDWordint MemblockIDint MemblockPOS );
static 
void DEWriteMemblockFloatint MemblockIDint MemblockPOSfloat VALUE );
static 
float DEMemblockFloatint MemblockIDint MemblockPOS );
static 
int DENextFreeMemblockvoid );
static 
void DEWriteMemblockLongint MemblockIDint MemblockPOSint VALUE );
static 
int DEMemblockLongint MemblockIDint MemblockPOS );
static 
void DEWriteMemblockIntint MemblockIDint MemblockPOSint VALUE );
static 
int DEMemblockIntint MemblockIDint MemblockPOS );


Meshes (3D):
static 
int DEMeshExistint MeshID );
static 
void DEMakeObjectFromMeshint ObjectIDint MeshID );
static 
void DEMakeMeshFromMemblockint MeshIDint MemblockID );
static 
void DEDeleteMeshint MeshID );
static 
int DEGetMeshSizeint MeshID );
static 
int DENextFreeMeshvoid );


Setup:
static 
void DESetDisplayModeint Widthint Heightint Depth);
static 
void DESetWindowOn();
static 
void DESetWindowOff();
static 
void DESetWindowSizeint Widthint Height );
static 
void DESetWindowPositionint XPosint YPos );
static 
void DESetWindowTitlechar *WTitle );


System:
static 
void CopyMemoryvoid *MemblockStartint Sizevoid *MemblockTarget );


There are much more commands to be coded and that are not yet available (AmiDARK Engine is in Alpha state currectly).

I hope these informations give more on the overview of the project.

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix

Yeah, thanks for good answer. That all what i need to know :) Indeed, that project looks very good, and i read that topic becouse just saw the first "nice" image and when i see these "easy commands", which remind me some kind of demo-machines.

If you will be in interest about any beta-tests / finding bugs, etc, so just let me know , i with my peg2 will help you with all that NDA and so on :)

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@kas1e
I've just started http://www.amidark-engine.com/

It's only a "blank" page but, there will soonly be news concerning the project.

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix
List of fucntions looks pretty clear and understanable ! That cool. Imho that engine can be also used not only for games, but also for making scene-demos (like Karate by m4nkind for 68k/ppc amigas) ?

Have you plans to add support of some "music" formats ? Like mp3, ogg, tracker modules maybe (like mod, s3m, xm, etc) ?

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@kas1e
Technically you can create demo with AmiDARK Engine.
Actually, it is only compatible with Amiga OS 4.1 (not classic)

Support for various music file format is planed. I don't know exactly which formats will be supported but theorically file format like : MP3, MOD, WAV should be supported.

Regards,
Fred

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Just can't stay away
Just can't stay away


See User information
@freddix

don't forget to add support for hively tracker music ;)
os4 replayer available in the hively tracker release archive at www.hivelytracker.com!

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
@spotUP
If someone want a specific support to be added to AmiDARK Engine, send an e-mail at :
fred (at) amidark-engine (dot ) com
I will not add all support but if sources are available to add it, I will check and maybe it'll be added in final AmiDARK Engine :)

Regards,
Freddix / AmiDARK

All we have to decide is what to do with the time that is given to us.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix

Will w8 for the first alpha-beta-test version :) It will be the first demo-kind system for os4 :)

Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Home away from home
Home away from home


See User information
@freddix

Looks nice, hope you can get this done

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Just popping in
Just popping in


See User information
@freddix

Looks like SDL_Mixer is a winner (mp3, ogg, mod and wav) and is easy to use too.

/Me, myself and A1G4!
Go to top
Re: AmiDARK Engine WIP - Multi Camera, Instance, Load/Save Objects
Quite a regular
Quite a regular


See User information
Some news on the project.
I've added some new commands to the SDK :
- Object scaling
- Object ghost
- Object alphamapping (using blending in fact :p)

Fog handler

Here is a small shot with a ghosted object and fog enabled :
http://www.odyssey-creators.com/Ghost&Fog.jpg

EDIT:
I've also added commands for drawind priorities :
DEDrawAtFront : Trace 3D then 2D
DEDrawAtBack : Trace 2D then 3D.
I had to put 2D drawing in an extensible list for display.


Edited by freddix on 2009/10/17 1:15:05
All we have to decide is what to do with the time that is given to us.
Go to top

  Register To Post
(1) 2 »

 




Currently Active Users Viewing This Thread: 2 ( 0 members and 2 Anonymous Users )




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project