小编sha*_*ill的帖子

在three.js中进行模型导入后的智能居中和缩放

有没有办法确定模型的大小和位置,然后自动居中和缩放模型,使其位于相机的原点和视图内?我发现当我从Sketchup导入Collada模型时,如果模型不在Sketchup中的原点居中,那么它不会以three.js为中心.虽然这是有道理的,但在导入后自动居中到原点会很不错.

我在不同的文件加载器中看到了一些关于获取导入模型边界的讨论,但是我一直无法找到任何关于如何做到这一点的参考.

缩放问题不太重要,但我觉得它与边界函数有关,这也是我问它的原因.

编辑:

玩了一下之后的更多信息和一些谷歌搜索...

加载collada文件时我的回调函数的代码现在看起来像这样:

loader.load(mURL, function colladaReady( collada ) {

dae = collada.scene;
skin = collada.skins[ 0 ];

dae.scale.x = dae.scale.y = dae.scale.z = 1;
dae.updateMatrix();

//set arbitrary min and max for comparison              
var minX = 100000;
var minY = 100000;
var minZ = 100000;
var maxX = 0;
var maxY = 0;
var maxZ = 0;

var geometries = collada.dae.geometries;               
for(var propName in geometries){
if(geometries.hasOwnProperty(propName) && geometries[propName].mesh){
    dae.geometry = geometries[propName].mesh.geometry3js;
    dae.geometry.computeBoundingBox();
    bBox = dae.geometry.boundingBox;
    if(bBox.min.x < minX) …
Run Code Online (Sandbox Code Playgroud)

three.js

8
推荐指数
1
解决办法
3852
查看次数

使用 ObjLoader Three.js 后如何计算边界框

我在尝试使用 OBJLoader 加载模型后获取模型几何的边界框时遇到了问题。到目前为止我有:

var loader = new THREE.OBJLoader();
loader.load( mURL, function ( object ) {

for ( var i = 0, l = object.children.length; i < l; i ++ ) {
    geometry = object.children[0].geometry;         
    bBox = geometry.computeBoundingBox();
    console.log("have a box of "+bBox);
}
//...rest of function
Run Code Online (Sandbox Code Playgroud)

但是当我将 bBox 写入控制台时,它是未定义的。在这种情况下,几何图形不是访问的正确属性吗?

javascript three.js

2
推荐指数
1
解决办法
7552
查看次数

标签 统计

three.js ×2

javascript ×1