Pages: 1
Commentaires des membres
Pages: 1
Bonjour, bienvenue sur le monde de irrLicht, je vous assures que vous trouverez votre bonheur ici. bref,,,moi aussi je suis nouveaux mais pour un bon début de te conseille de commencer avec les exemples de la sdk irrLicht (à télécharger dans le site de irrLicht). personnellement, j'ai appris plein de choses & astuces utiles pour un projet comme le votre. je laisse les maîtres de ce forum vous explique plus.@bientôt
Hors ligne
Salut astragoth , et bienvenue sur irrlicht ![]()
sympa tes modèles
Ca doit claquer des polygones , non ^^ ?
Perso , pour répondre à tes question , je dirais :
Hors ligne
Bonjour astragoth et sois le bienvenu.
En complement de ce qui vient d'etre dis ( et desole pour les accents, je suis avec un tel portable):
Ton projet est en effet tres interessant. Tu a deja pas mal d'element en ta possession visiblement (je pense en
particulier aux modeles 3D).
Tout d'abord, justement, concernant le meilleurs format 3D pour l'export pour pouvoir l'employer avec Irrlicht,
chaque format possede ses qualites, comme souvent. Mais dans la mesure ou tu bosses avec 3DSMAX, perso je dirais
tout simplement le format 3DS qui est tres bien supporte par Irrlicht, et ce pour tout tes modeles.
Les photo des modelisations que tu presente sont vraiment de tres bonnes qualites. (comme dis Ramis, attention
aux modeles trop lourd
)
Concernant l'emploi d'Irrlicht, pas de soucis, il devrait te permettre d'arriver a tes fin pour ton projet.
Pour ce qui est du moteur physique, une fois tes premiers elements graphiques integres et testes, alors ce sera
pour toi l'heure du choix. Newton a le grand avantage d'etre simple et facile d'acces. Maintenant, attention,
dans sa version actuelle il est vite limite sur des scenes biens chargees. Donc seule quelques essais te
permettront de te faire une idee plus precise.
Pour des tuto, comme le souligne tres justement achoura, je pense qu'il te faut deja bien apprehender ceux
du SDK, qui sont bien commentes et facile d'approche.
Pour un apprentissage vraiment de base, je te conseil aussi ce lien que je recommande a chaque fois, que tu trouve
dans les liens du portails:
http://www.siteduzero.com/tutoriel-3-5690-petit-guide-d-irrlicht.html
Quand aux coups de mains, il y aura toujours quelqu'un dans le coin pour t'aider, pour peut que tu fournisses
les elements pour se faire une bonne idee de soucis auquels tu es confronte.![]()
Hors ligne
Bonjour tout le monde,
merci beaucoup pour tout vos conseil, mais j'ai déjà fait les tuto d'irrlicht, c'est ce qui m'a aidé à choisir ce moteur 3D.
car j'avais commencé a voir OGRE, et je l'ai trouvé trop compliqué à mettre en place, ou alors je voulais me faire c...... lol
Bon, je vais attaquer avec vos conseils, et je vous tiendrai au courant, meme si je n'ai pas de soucis, je vous présenterais l'etat
Hors ligne
astragoth Ecris:
...et je vous tiendrai au courant, meme si je n'ai pas de soucis, je vous présenterais l'etat
Hors ligne
Salut,
J'ai commencé à faire du code pour afficher ma piste.
Le seul probléme est que lorsque j'utilise OPENGL comme driver,j'ai la piste qui est bleu ...

Et si j'utilise DIRECT3D 8 ou 9, j'ai le message d'erreur suivant:
Error: Parallax map renderer only supports vertices of type EVT_TANGENTS
Est ce que vous avez eu le meme probléme????
Comment résoudre ca?
Merci d'avance
Hors ligne
A chaud je dirais un soucis de format de ton objet 3D (niveau des material entre autre).
Quelle format d'export emplois-tu ?
Hors ligne
J'utilise le format d'export 3DS, de 3DSMAX 9
Hors ligne
L'idéal dans ce cas est de pouvoir tester, si cela ne t'embête pas, fait un zip avec ton ficher 3DS et les médias associés, pour
pouvoir tester et voir ce qui ne va pas (n'oublie pas l'espace d'upload du site, cela peut rendre service)![]()
Hors ligne
Tu m'excuseras, mais ça me dérange un peu de passer mes fichiers 3DS, comme ca ...
Du coup, je reviendrais plus tard sur le rendu de la map.
J'ai ajouter une caméra attacher à la voiture, qui la suit en translation, et rotation comme sur le jeu trackmania.
Il me reste juste à mettre l'apect physique.
J'ai commencé à faire une gestion de collision avec irrlicht, et j'ai eu quelques soucis avec c'est qu'un moteur 3D.
Du coup, j'ai attaqué la gestion de collision avec Newton.
Mais j'ai un petit soucis sur une ligne car elle met 20minutes à s'éxécuter, et en plus ca plante lol
NewtonTreeCollisionEndBuild(g_newtonmap, 1);
Voici le code de ma classe:
#include "StdAfx.h"
#include "Collision.h"
#include "Trace.hpp"
CCollision::CCollision(void)
{
selectedSceneNode = 0;
lastSelectedSceneNode = 0;
// Init newton
nWorld = NewtonCreate(NULL, NULL);
// Set up default material properties for newton
int i = NewtonMaterialGetDefaultGroupID(nWorld);
NewtonMaterialSetDefaultFriction (nWorld, i, i, 0.8f, 0.4f);
NewtonMaterialSetDefaultElasticity (nWorld, i, i, 0.3f);
NewtonMaterialSetDefaultSoftness (nWorld, i, i, 0.05f);
NewtonMaterialSetCollisionCallback (nWorld, i, i, NULL, NULL, NULL, NULL);
}
CCollision::~CCollision(void)
{
}
void CCollision::GestionCollision(void)
{
}
void CCollision::InitNewton(void)
{
nWorld = NewtonCreate (NULL, NULL); // On initialise nWorld
}
void CCollision::InitCollisionMap()
{
g_newtonmap = NewtonCreateTreeCollision(nWorld, NULL);
NewtonTreeCollisionBeginBuild(g_newtonmap);
int cMeshBuffer, j;
int v1i, v2i, v3i;
IMeshBuffer *mb;
float vArray[9]; // vertex array (3*3 floats)
int tmpCount = 0;
for (cMeshBuffer=0; cMeshBuffer<meshpiste->getMesh(0)->getMeshBufferCount(); cMeshBuffer++)
{
mb = meshpiste->getMesh(0)->getMeshBuffer(cMeshBuffer);
video::S3DVertex2TCoords* mb_vertices = (irr::video::S3DVertex2TCoords*)mb->getVertices();
u16* mb_indices = mb->getIndices();
// add each triangle from the mesh
for (j=0; j<mb->getIndexCount(); j+=3)
{
v1i = mb_indices[j];
v2i = mb_indices[j+1];
v3i = mb_indices[j+2];
vArray[0] = mb_vertices[v1i].Pos.X;
vArray[1] = mb_vertices[v1i].Pos.Y;
vArray[2] = mb_vertices[v1i].Pos.Z;
vArray[3] = mb_vertices[v2i].Pos.X;
vArray[4] = mb_vertices[v2i].Pos.Y;
vArray[5] = mb_vertices[v2i].Pos.Z;
vArray[6] = mb_vertices[v3i].Pos.X;
vArray[7] = mb_vertices[v3i].Pos.Y;
vArray[8] = mb_vertices[v3i].Pos.Z;
std::cout << "\
";
NewtonTreeCollisionAddFace(g_newtonmap, 3, (float*)vArray, 12, 1);
}
}
NewtonTreeCollisionEndBuild(g_newtonmap, 1);
g_newtonmapbody = NewtonCreateBody(nWorld, g_newtonmap);
// set the newton world size based on the bsp size
float boxP0[3];
float boxP1[3];
float matrix[4][4];
NewtonBodyGetMatrix (g_newtonmapbody, &matrix[0][0]);
NewtonCollisionCalculateAABB (g_newtonmap, &matrix[0][0], &boxP0[0], &boxP1[0]);
// you can pad the box here if you wish
//boxP0.y -= somevalue;
//boxP1.y += somevaluef;
NewtonSetWorldSize (nWorld, (float*)boxP0, (float*)boxP1);
}
void CCollision::InitCollisionCar()
{
NewtonCube *tmp = new NewtonCube;
tmp->mesh = meshvoiture;
tmp->node = nodevoiture;
// Create a box primitive. 38 is just an estimated value of the size of the model,
tmp->collision = NewtonCreateBox(nWorld, 38, 38, 38, NULL);
tmp->body = NewtonCreateBody(nWorld, tmp->collision);
// Set user data pointer to the scene node
NewtonBodySetUserData(tmp->body, tmp->node);
// Set body mass & inertia matrix
NewtonBodySetMassMatrix (tmp->body, 10.0f, 150.0f, 150.0f, 150.0f);
// Set the freeze threshhold to 1 unit (default is 0.01 but irrlight uses a large unit scale)
NewtonBodySetFreezeTreshold(tmp->body, 1.0, 1.0, 1.0);
// Set callback functions for the body
NewtonBodySetTransformCallback(tmp->body, SetMeshTransformEvent);
NewtonBodySetForceAndTorqueCallback(tmp->body, ApplyForceAndTorqueEvent);
// Set the position of the body
matrix4 mat;
mat.setTranslation(nodevoiture->getPosition());
NewtonBodySetMatrix(tmp->body, mat.pointer());
}
//////////////////////////////////////////////////////////////////////////
//
// The last 2 functions are callbacks from newton
//
//////////////////////////////////////////////////////////////////////////
void _cdecl CCollision::SetMeshTransformEvent(const NewtonBody* body, const float* matrix)
{
// copy the matrix into an irrlicht matrix4
matrix4 mat;
memcpy(mat.pointer(), matrix, sizeof(float)*16);
// Retreive the user data attached to the newton body
ISceneNode *tmp = (ISceneNode *)NewtonBodyGetUserData(body);
if (tmp)
{
// Position the node
tmp->setPosition(mat.getTranslation()); // set position
tmp->setRotation(mat.getRotationDegrees()); // and rotation
}
}
void _cdecl CCollision::ApplyForceAndTorqueEvent (const NewtonBody* body)
{
float mass;
float Ixx;
float Iyy;
float Izz;
float force[3];
float torque[3];
NewtonBodyGetMassMatrix (body, &mass, &Ixx, &Iyy, &Izz);
force[0] = 0.0f;
force[1] = NEWTON_GRAVITY * mass;
force[2] = 0.0f;
torque[0] = 0.0f;
torque[1] = 0.0f;
torque[2] = 0.0f;
NewtonBodyAddForce (body, force);
NewtonBodyAddTorque (body, torque);
}Hors ligne
astragoth Ecris:
Tu m'excuseras, mais ça me dérange un peu de passer mes fichiers 3DS, comme ca ...
Du coup, je reviendrais plus tard sur le rendu de la map.
Hors ligne
Oki, je vais regardé ca.
J'ajoute dans les 19000 faces .... c'est vrai que c'est beaucoup ...
je vais essayer de voir pour diminuer
Hors ligne
| Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
|---|---|---|---|---|
|
Préférences cookies Corrections |
![]() ![]() ![]() ![]() |
Propulsé par Django xhtml 1.0 css 2.1 |
884 membres 1440 sujets 11337 messages |
Dernier membre inscrit: Saidov17 160 invités en ligne membre en ligne: - RSS Feed |