Je crée un objet THREE.Mesh
aide d'un objet THREE.JSONLoader
comme ceci:
// Create castle. loader.load('/Meshes/CastleTower.js', function(geometry, materials) { var tmp_material = new THREE.MeshLambertMaterial(); THREE.ColorUtils.adjustHSV(tmp_material.color, 0, 0, 0.9); var castle = new THREE.Mesh(geometry, tmp_material); castle.scale.set(0.2, 0.2, 0.2); castle.rotation.setX(-Math.PI/2); scene.add(castle); });
Est-il possible de créer un CANNON.RigidBody
partir de l'objet THREE.Mesh
( var castle
) ou THREE.Geometry
( var geometry
)? Une autre façon de lire ceci est: Comment faites-vous un THREE.Mesh
personnalisé "solide"?
J'ai utilisé Blender, créé un nouveau château à partir de boîtes, et l'ai exporté au format Three.js. Si vous définissez la masse à 0
d'une CANNON.Body
, elle reste statique. Cela s'est bien passé …
Bien, cela dépend de la précision de la représentation physique de votre modèle. Je ne suis pas très familier avec cannon.js, mais voici quelques options que je connais:
Une approche non axée sur le cannon.js serait, par exemple, utiliser Refast. La refonte charge votre fichier .obj pour vous et créez un maillage de navigation selon vos paramètres. Ensuite, vous pouvez vous promener là-bas (absolument génial si vous avez un RTS Birdview comme un jeu, ou des bots en cours d'exécution). Un port javascript retrait peut être trouvé ici: https://github.com/vincent/recast.js
J'espère que cela t'aides!
J'ai eu un problème similaire et j'ai créé les "points" et les "visages" nécessaires (comme décrit dans les docs Cannon) à partir de la THREE.Geometry (appelée geometry
ici) avec ces deux fonctions:
cannonPoints = geometry.vertices.map(function(v) { return new CANNON.Vec3( vx, vy, vz ) }) cannonFaces = geometry.faces.map(function(f) { return [fa, fb, fc] })