Pages vues depuis 25/07/2007 : 25 375 468
Index du forum »» Création-Développement »» Deux video de mes progs 3D
En fait y a pas de perspective : je l'ai jamais mise comme Microbe3D sert (servait) surtout à animer de petits objets, logo tournant et autre. Mais effectivement sur un etre humain l'absence de perspective choque trop
Faut que je la rajoute
>sur winuae 68k pour trouver la bug arexx : c'est plus confortable en cas de crash
J'ai cherché 3 jours et j'y comprends rien: c'est comme si le lancement d'arexx venait bousiller les données déjà en mémoire de Microbe3D d'où le crash par la suite
J'ai mes propres routines d'allocation mémoire, tracées et avec des "walls", et je constate juste que sitôt que je suis (dans la première fonction Microbe3D lancée par) arexx les données sont corrompues à un endroit : un des blocs mémoire est merdé "spontanément" sans y avoir touché volontairement (par exemple les vertex-normals sont abimées sans avoir rien fait avec)
Le crash est ensuite causé par l'accés à ses données corrompues lors du nouveau rendu de la Scene (lecture des triangles) mais bien plus tard
Mais c'est aléatoire : parfois tout est 100% ok si bien qu'il est dur d'avoir un log de l'erreur avec certitude
Alain
Non non le rexx fait presque rien : c'est le même code que dans Demo-arexx.rexx qui charge le logo Amiga
Pour info: le modele "Juliet" de la vidéo fait
18083 triangles
9522 vertices
23596 vertex-normals
21 bones
ouupps c'est gros
Il vient de là
http://tf3dm.com/3d-model/juliet-90917.html
Un site avec beaucoup de fichiers .obj qui peuvent être chargés dans Microbe3D
(les autres formats peuvent être convertis en .obj avec Blender ou autre. Mais avec plus ou moins de bonheur)
Alain
Oui c'est System
mais après 3 jours de recherche, sans succès, je penche plutôt pour une
erreur de manque de pile ou de console (affichage massif du debug donnerait la bug ?) ou de ramlib ou qque chose comme ça...
Par contre System() lance bien le prog arexx
Puis l'erreur arrive entre l'appel de Microbe3D coté arexx et le début de la meme fonction coté Microbe3D
Je veut dire la mémoire est ok avant et bousillé sitot après
Pour l'instant j'ai laissé ça de coté... trop épuisant pour les neurones ...
Alain
/*=================================================================*/
/*
* Synchronous external command (wait for return)
* Uses your Input/Output unless you supply other handle
* Result will be return code of the command, unless the System() call
* itself fails, in which case the result will be -1
*/
void OSSystem(UBYTE* name)
{
struct TagItem stags[3];
ULONG result=0;
stags[0].ti_Tag = SYS_Input;
stags[0].ti_Data = Input();
stags[1].ti_Tag = SYS_Output;
stags[1].ti_Data = Output();
stags[2].ti_Tag = TAG_END;
result=System(name,stags);
VAR(result)
Libprintf("OSSystem OK\n");
}
/*=================================================================*/
APTR U3D_Read(APTR Scene,UBYTE* filename)
/* lire un fichier 3d, motion-capture ou rexx */
{
[...]
if(format=='R')
{
Libsprintf(rxname,"C:/Rexxc/rx %s %ld",objname,Scene);
#ifdef OS4
Libsprintf(rxname,"C:rx %s %ld",objname,Scene);
#endif
OSSystem(rxname);
return(NULL);
}
Petite image avec les textures en 1024x1024 et le bump : on pousse WaRp3D vers des limites de réalisme insoupconnées :-)
(Reste un petit problème sur les cheveux à régler : pas transparents)
http://thellier.free.fr/Microbe3D-Juliet-bump-big.jpg
Alain
Pour la commande System() as-tu vraiment besoin de input et output ?
Pourquoi pas un truc tout simple comme ça en spécifiant juste le mode asynchrone à FALSE ?
int rc = SystemTags(commandREXX,SYS_Input,NULL,SYS_Output,NULL,SYS_Error,NULL,SYS_Asynch,FALSE,TAG_END);
if (!rc)
printf("Well done, Alain !");
else
printf("y a un truc qui ne tourne pas rond...");
Sinon, chapeau pour le réalisme de la nana !