由于项目需要展示3d模型,所以对three做了点研究,分享出来 希望能帮到大家
先看看效果:
three.js整体来说 不是很难 只要你静下心来研究研究 很快就会上手的
首先我们在页面上需要创建一个能够放置3D模型的画布 也可以说是初始化 Three
document.body.appendChild(renderer.domElement);
}
通过上面的代码不难看出 我们设置了 在body里追加了一块画布 宽高是 client的一半颜色为 0x66666 这里要注意的是 renderer = new THREE.WebGLRenderer(); 因为我们所有的设置都是以renderer为对象设置
下来 我们需要调整摄像头 即视觉角度
以上代码主要是控制视觉角度 数值可以在后期根据自己的需求去调整
加载场景:
加载灯光效果
显示模型对象:
//周围边框
b<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper = new THREE.<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper();
b<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper.visible = true;
var meshMaterial = material;
mainModel = new THREE.Mesh(geometry,meshMaterial);
b<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper.update(mainModel);
b<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper.geometry.computeBounding<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>();
scene.add(b<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>Helper);
//地板网格
// var gridHelper = new THREE.GridHelper(500,40); // 500 is grid size,20 is grid step
// gridHelper.position = new THREE.Vector3(0,0);
// gridHelper.rotation = new THREE.Euler(0,0);
// scene.add(gridHelper);
// var gridHelper2 = gridHelper.clone();
// gridHelper2.rotation = new THREE.Euler(Math.PI / 2,0);
// scene.add(gridHelper2);
// var gridHelper3 = gridHelper.clone();
// gridHelper3.rotation = new THREE.Euler(Math.PI / 2,Math.PI / 2);
// scene.add(gridHelper3);
//
// var grid = new THREE.GridHelper(300,40,25,[0,1],0x000055,0.2,true,"#FFFFFF","left");
// scene.add(grid);
var x = (boundBox.max.x - boundBox.min.x).toFixed(2);
var y = (boundBox.max.y - boundBox.min.y).toFixed(2);
var z = (boundBox.max.z - boundBox.min.z).toFixed(2);
console.log(x);
console.log(y);
console.log(z);
console.log(boundBox);
mesh.position.set(0,0);
// mesh.position.x = scene.position.x;
// mesh.position.y = scene.position.y ;
// mesh.position.z = scene.position.z;
scene.add(mesh);
renderer.clear();
renderer.render(scene,camera);
} );
loader.load( '3dfile/莫比乌斯环.STL' );
}
这里根据文件类型选择相对应的js引入即可 我加载的是STL模型 所以我引入的是 STLLoader.js
下来是控制方法 (虽然我没有在显示代码里面写根据键盘按键放大缩小 但还是提供给大家 参考)
最后就是一个初始调用了
initThree();
initScene();
initCamera();
initLight();
initObject();
initControl();
animate();
}
附上完整代码
哦 我的文件结构
如果想要所有文件的小伙伴 给我留言即可
补充一点,由于在显示模型的方法里我加入了 bBoxHelper = new THREE.BoxHelper() 所以我们可以获取到模型的 X Y Z三轴的尺寸 也可以当作 模型的长宽高
原文链接:https://www.f2er.com/js/34405.html