我有一个从meshlab导出的3D模型,并希望将其加载到three.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()从未执行过,但是我不知道出了什么问题
发布于 2018-06-09 04:32:15
没有足够的信息来回答你的问题,但我不假思索地认为,你的模型太大了。
在设置名称后尝试设置doing a mesh.scale.multiplyScalar(0.01),看看它是否显示出来。
如果这不起作用..使用chrome调试器,在创建网格后在行上设置断点,然后执行mesh.geometry.computeBoundingBox()...然后检查mesh.geometry.boundingBox以找到网格的最小/最大边界。确保该大小和中心点接近于零,并且大小在相机范围的.near和.far范围内。如有必要,您可以在代码中自动执行此操作,但这有点复杂。哈!
https://stackoverflow.com/questions/50767835
复制相似问题