从 THREE.Mesh 或 THREE.Geometry 创建 CANNON.RigidBody [英] Create CANNON.RigidBody from THREE.Mesh or THREE.Geometry

查看:20
本文介绍了从 THREE.Mesh 或 THREE.Geometry 创建 CANNON.RigidBody的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 THREE.JSONLoader 对象创建一个 THREE.Mesh 对象,如下所示:

I am creating a THREE.Mesh object using a THREE.JSONLoader object like so:

// 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);
});

是否可以从 THREE.Mesh (var Castle) 或 THREE.Geometry<创建一个 CANNON.RigidBody/code> (var geometry) 对象?另一种阅读方式是:如何使任何自定义 THREE.Mesh 成为实体"?

Is it possible to create a CANNON.RigidBody from the THREE.Mesh (var castle) or THREE.Geometry (var geometry) object? Another way you could read this is: How do you make any custom THREE.Mesh "solid"?

我使用了 Blender,用盒子创建了一个新城堡,并且 导出为 Three.js 格式.如果您将 CANNON.Body 的质量设置为 0,它会保持静态.这个效果很好......

I used Blender, created a new castle from boxes, and exported it to the Three.js format. If you set the mass to 0 of a CANNON.Body, it remains static. This worked out perfectly...

推荐答案

这取决于您的模型的物理表示应该有多精确.我对 cannon.js 不是很熟悉,但这里有一些我知道的选项:

Well it depends on how exact the physical representatin of your model should be. I'm not very familiar with cannon.js, but here are some options I know:

  • 在您的塔上使用computeBoundingBox"并使用这些边界创建一个 cannon.js 框
  • 以类似的方式使用computeBoundingSphere"
  • 将物理用于凹面(即任意)网格.这是最消耗性能的方式.Cannon.js 有一个例子:http://schteppe.github.io/cannon.js/demos/bunny.html

非 cannon.js 相关的方法是例如使用重铸.Recast 会为您加载 .obj 文件并根据您的设置为您创建导航网格.然后你可以在那里四处走走(如果你有像游戏一样的 RTS 鸟瞰图,或者跑来跑去的机器人,那就太好了).可以在此处找到重铸的 javascript 端口:https://github.com/vincent/recast.js

A non cannon.js related approach would be to e.g. use Recast. Recast would load your .obj file for you and create a navigation mesh for you according to your settings. Then you could walk around there (absolutely great if you have a RTS birdview like game, or bots running around). A recast javascript port can be found here: https://github.com/vincent/recast.js

希望这有帮助!

这篇关于从 THREE.Mesh 或 THREE.Geometry 创建 CANNON.RigidBody的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆