website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Microbe3D: besoin d'aide traduction do anglaise


Posté : 09-04-2013 10:33 icone du post

Hello
merci du retour
>Je te conseil l'utilisation de Entité (Entity) au lieu de Chose
C'est vrai que Entity est mieux en anglais par contre en français ça veut pas dire grand chose à par les "Entités Biologique Extra-terrestre" de Mulder
En plus comme c'est un nom de paramétre j'ai vraiment pas envie de le modifier dans tout les "!include!" que je viens juste de finir ==> je garde Chose/Thing


>Si je comprends bien M3D fait comme W3D.
ouh la la ....
Alors là je me dis que j'ai du bien mal expliquer si c'est ce qu'on peut croire :-/
non non non Microbe3D ne fait pas comme Warp3D ou MiniGL(=Mesa=OpenGL)

1) Il fait mieux cad que c'est une bibliotheque de haut niveau contrairement à Warp3D avec peu de fonctions qui font beaucoup de boulot (voir exemple demo-simpler.c ci dessous)

2) Avec Warp3D (mais aussi MiniGL & co) pour tracer un objet il faut le tracer triangle par triangle (ou au mieux par gros paquets de triangles)
,en sélectionnant la texture, le mode de transparence,etc.... c'est une bibliotheque orientée tracage
Alors que là on charge un ou plusieurs fichiers d'objets 3D et après Microbe3D se charge de tout le tracage en un seule instruction
C'est un peu comme ce que fait la datatype.library pour les images = tout le boulot

3) La différence entre MiniGL et Warp3D c'est le Transformation & Lighting
Pour les deux on trace on trace des triangles mais MiniGL les met en plus dans la position que l'on veut (cad change le point de vue de la scene) et en plus leur applique un éclairage (cad colorie leurs sommets selon l'influence des lampes)
==> Le Transformation & Lighting est implémenté dans Microbe3D aussi

Evidemment on a moins de controle sur les effets "inhabituels" qu'avec MiniGL et Warp3D par contre pour afficher des objets/matériaux "classiques" y a pas plus simple (pas besoin de centaines de lignes pour à peine commencer à tracer comme avec Warp3D)

Alain

/* Microbe3D: micro .obj 3D engine for Wavefront.OBJ files that use Warp3D */
/* Microbe3D library: Alain THELLIER - Paris - FRANCE - July 2011 to 2013 */
/* Microbe3D is small 3D engine that display directly 3D Wavefront .obj files */
/* It is maded as a library for programmers */
/* If you are a programmer and you want to have a nice 3D object(animated logo) */
/* in your Amiga app then Microbe3D is done for you */

/* This file contains a demo for Microbe3D : a simple rotating logo with env-mapping*/


#!!include!! /proto/Microbe3D.h>
struct Library* Microbe3DBase=NULL;
#ifdef OS4
struct Microbe3DIFace* IMicrobe3D =NULL;
#endif

/*=================================================================*/
int main(int argc, char *argv[])
{
APTR Scene;
APTR Object;
APTR Instance;
APTR Material;
APTR Material2;
ULONG VanillaKey;

Microbe3DBase = OpenLibrary("Microbe3D.library",28);
if (Microbe3DBase==NULL)
goto panic;
#ifdef OS4
IMicrobe3D = (struct Microbe3DIFace*)GetInterface((struct Library *)Microbe3DBase, "main", 1, NULL);
if (IMicrobe3D==NULL) return(FALSE);
#endif

Scene =U3D_EasyOpenScene("Amiga Logo",480,480); /* open a scene in 480x480 pixels window */

Object=U3D_Read(Scene,"data/AmiLogo.obj"); /* load a 3D object */
if(Object==NULL) goto panic; /* if not loaded then exit */

U3D_Unitize(Object,2.0); /* fit to screen (ie -1.0 +1.0) */
U3D_Normals(Object,0.0); /* do simple face normals */
U3D_GridWeld(Object,(1.0/500.0),0.001,0.001); /* will remove the double points not visible on screen */

Material =U3D_Find(Object,U3D_MATERIAL,"mat_white_plastic"); /* obtain current logo's material */
Material2=U3D_Find(Object,U3D_MATERIAL,"mat_cubemapxpos"); /* find the env mapping cube called "mat_cubemapxpos" */
U3D_SetSpecialMaterial(Object,Material,Material2,U3D_MATENVCUBE); /* apply cub env mapping */

Instance=U3D_AddInstance(Scene,Object,"Instance"); /* add to scene */

printf(" Esc for quit \n");

while(VanillaKey!=27)
{
U3D_Rotate(Instance,3.0,1.0,4.0,U3D_CHANGE); /* rotate logo */
U3D_DrawScene(Scene); /* draw all */
VanillaKey =U3D_QueryValue(Scene,U3D_VANILLAKEY); /* get keyboard value */
}

panic:
U3D_Delete(Scene); /* close all */
#ifdef OS4
if(IMicrobe3D) DropInterface((struct Interface*)IMicrobe3D );
#endif
if(Microbe3DBase) CloseLibrary(Microbe3DBase);
return 0;

}
/*=========================================================================== =======*/







Message édité par : thellier / 09-04-2013 10:35

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1523&forum=14