Bonjour, j'utilise PhysX depuis peu, je dois dire que c'est de la balle !
Donc jusqu'ici j'ai créé un sol avec un "triangle mesh", j'ai ajouté un véhicule utilisant des joints basiques (revolute, cylindrical) et tout fonctionne parfaitement.
La dernière chose qu'il me manque c'est d'avoir des surface glissante et d'autres adhérentes, j'ai donc suivi l'example "SampleMeshMaterials" mais pas moyen d'avoir l'effet voulu.
J'ai créé le materiel par defaut que veux être glissant:
Puis un materiel pour les pneu (très adhérent):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 defaultMaterial->setRestitution(0.5); defaultMaterial->setStaticFriction(0.01f); defaultMaterial->setDynamicFriction(0.01f);
Et un autre pour le sol, pour l'instant glissant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 NxMaterialDesc m; m.restitution = 0.2f; m.staticFriction = 4.0f; m.dynamicFriction = 2.0f; mPneu = gScene->createMaterial(m)->getMaterialIndex();
Pour les matériaux dans le triangle mesh, j'ai ajouté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 m.restitution = 0.5f; m.staticFriction = 0.01f; m.dynamicFriction = 0.01f; mBitume = gScene->createMaterial(m)->getMaterialIndex();
Mais il doit manquer un paramètre car seul le matériel que je donne aux pneux modifie l'adhérence de mon véhicule, les valeurs du default material et bitume n'ont aucun effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 WORD* mtrl = new WORD[IndexCount]; for( int i=0; i<IndexCount; i++ ) { mtrl[i]=mBitume; } NxTriangleMeshDesc* triangleMeshDesc = new NxTriangleMeshDesc(); assert(triangleMeshDesc); triangleMeshDesc->numVertices = VertexCount; triangleMeshDesc->pointStrideBytes = sizeof(NxVec3); triangleMeshDesc->points = vert; triangleMeshDesc->numTriangles = IndexCount; triangleMeshDesc->flags = 0; triangleMeshDesc->triangles = ind; triangleMeshDesc->triangleStrideBytes = 3 * sizeof(NxU32); triangleMeshDesc->materialIndices = mtrl; triangleMeshDesc->materialIndexStride = sizeof(WORD);
Est-ce que quelqu'un aurait une idée de l'erreur qui peut aboutir à ce problème ?
Merci







Répondre avec citation
Partager