Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在blender模型上添加物理,three.js Physijs_Three.js_Physics_Physijs - Fatal编程技术网

在blender模型上添加物理,three.js Physijs

在blender模型上添加物理,three.js Physijs,three.js,physics,physijs,Three.js,Physics,Physijs,如何在混合器模型上添加物理? 我试过ConvexMesh和ConcaveMesh,但没有成功 var mesh = {... blender exporter ...} var loader = new THREE.JSONLoader(); var mesh_obj = loader.parse(mesh,'./'); var mesh_materials = mesh_obj.materials; var mesh_geometry = mesh_obj.geometry; var _m

如何在混合器模型上添加物理? 我试过ConvexMesh和ConcaveMesh,但没有成功

var mesh = {... blender exporter ...}

var loader = new THREE.JSONLoader();
var mesh_obj = loader.parse(mesh,'./');
var mesh_materials = mesh_obj.materials;
var mesh_geometry = mesh_obj.geometry;

var _materials=[];
for ( var i = 0, i<mesh_materials.length;i ++ ) {
 var materialv = Physijs.createMaterial(mesh_materials[i],0.8,0.1);
 _materials.push(materialv)
}

mesh = new Physijs.ConcaveMesh(mesh_geometry, new THREE.MeshFaceMaterial(_materials),0 );
scene.add(mesh)
var mesh={…搅拌机导出器…}
var loader=new THREE.JSONLoader();
var mesh_obj=loader.parse(mesh,./);
var mesh_materials=mesh_obj.materials;
var mesh_geometry=mesh_obj.geometry;
var_materials=[];
对于(var i=0,i检查:

  • 您应该在
    Physijs.CreateMaterial
    中包装
    new THREE.meshfacemarterial()
    ,而不是相反
  • 您应该设置重力(我看不到完整的代码,所以只需在源代码中进行检查)
  • 检查是否未加载缓冲区几何体
  • 检查是否将Physijs.Scene用作场景对象

为防止出现此类问题,请尝试使用three.js构建该模型,并具有内置物理功能。

可能是一个老问题,但我也遇到了同样的问题,并选择将该模型包装在一个
BoxMesh
容器中并将模型添加为容器的子对象。下面是我使用的轨迹模型示例。然后设置子对象的位置,使其位于网格内。对于更复杂的模型,我猜一种方法是使用其他Physijs形状封装各个几何体

var box_container = new Physijs.BoxMesh(
    new THREE.CubeGeometry( 1, 0.7, 1.5 ),
    new THREE.MeshBasicMaterial({ transparent: true, opacity: 0.0 })
    // Uncomment the next line to see the wireframe of the container shape
    // new THREE.MeshBasicMaterial({ wireframe: true, opacity: 0.5 })
);
// Assuming your model has already been imported
var track = global_models.track.clone();

track.position.set(0,0,0);
box_container.add(track);
您可以看到我的代码示例,其中使用了我描述的轨迹模型,并使用线框查看容器


你能给我们举个例子吗?没有实际的代码很难调试。有什么解决办法吗?