无法在three.js

时间:2018-06-08 20:14:35

标签: javascript three.js 3d meshlab

我有一个3D模型,我从meshlab导出并希望以三个.js加载它:

var scene = new three.Scene();
scene.background = new THREE.Color( 0xffffff );
var camera = new three.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);

var renderer = new three.WebGLRenderer({ alpha: true });
renderer.setSize(window.innerWidth, window.innerHeight);

document.body.appendChild(renderer.domElement);
var mesh = null;
var material = new THREE.MeshBasicMaterial({color: 'yellow', side: THREE.DoubleSide});
function initMesh() {
    var loader = new THREE.OBJLoader();
    loader.load('merged.obj', function(obj) {

        obj.traverse(function (child) {

            if (child instanceof THREE.Mesh) {
                child.material = material;
            }

        });
    mesh = new THREE.Mesh(obj);
    mesh.name = 'mesh1';
    scene.add(mesh);
    });
}

但是我看不到模特。我尝试改变背景颜色和网格的颜色,但我不确定对象是否在场景中。

Meshlab中的摄像头具有以下观点:

<!DOCTYPE ViewState>
<project>
 <VCGCamera TranslationVector="13.2236 38.6958 -15.7741 1" 
LensDistortion="0 0" ViewportPx="1280 611" PixelSizeMm="0.0369161 
0.0369161" CenterPx="640 305" FocalMm="19.5338" 
RotationMatrix="0.86925 -0.494334 0.00615375 0 -0.0132438 -0.0108413 
0.999853 0 -0.494195 -0.869204 -0.0159706 0 0 0 0 1 "/>
 <ViewSettings NearPlane="1.03109" TrackScale="0.0390212" 
FarPlane="13.0311"/>
 <Render Lighting="0" DoubleSideLighting="0" SelectedVert="0" 
ColorMode="3" SelectedFace="0" BackFaceCull="0" FancyLighting="0" 
DrawMode="2" TextureMode="0"/>
</project>

我是否需要更改相机的设置?

编辑: OBJ文件可在以下位置找到:https://files.fm/u/e5n2u4dq

更多调试显示loader.load()永远不会执行,但我无法弄清楚错误

1 个答案:

答案 0 :(得分:0)

没有足够的信息来回答你的问题,但是我认为你的模型太过分了。

设置名称后,尝试设置mesh.scale.multiplyScalar(0.01),看看它是否显示。

如果这不起作用..使用chrome调试器,在创建网格后在线上设置断点,并执行mesh.geometry.computeBoundingBox()...然后检查mesh.geometry.boundingBox找到网格的最小/最大边界。确保该大小和中心点落在接近零的位置,并且大小落在相机范围的.near和.far之内。如果需要,您可以在代码中自动化这种居中,但这有点复杂。 HTH!