参考学习:
Three.js入门指南
https://www.ituring.com.cn/book/1272
https://www.scaugreen.cn/posts/30679/
今日目标:把带材质的模型能够良好的导入网页中
有错误的地方欢迎指正,我会仔细研究学习,加以改进哒~~~~~
一.导入obj格式的静态外部模型
教程参考:https://www.ituring.com.cn/book/miniarticle/53881
(一).引入无材质模型,在代码中设置材质
1.引入OBJLoader.js
文件
<script type="text/javascript" src="js/OBJLoader.js"></script>
2.在代码中写材质
var lo
3.双面绘制+动画
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/three.js"></script>
<script type="text/javascript" src="js/OBJLoader.js"></script>
</head>
<body>
<script type="text/javascript">
var mesh = null;
var id = null;
//renderer
var renderer = new THREE.WebGLRenderer();
renderer.setSize(800 ,600);
document.getElementsByTagName("body")[0].appendChild(renderer.domElement);
renderer.setClearColor(0x000000);
//scene
var scene = new THREE.Scene();
//camera
var camera = new THREE.OrthographicCamera(-4, 4, 3, -3, 0.1, 100);
camera.position.set(15, 30, 25);
camera.lookAt(new THREE.Vector3(0,0,0));
scene.add(camera);
//model
var loader = new THREE.OBJLoader();
loader.load("model/port2.obj",function(obj){
obj.position.set(0,-2,0);
obj.scale.multiplyScalar(.5);
obj.traverse(function(child) {
if (child instanceof THREE.Mesh) {
child.material = new THREE.MeshLambertMaterial({
color: 0xffff00,
side: THREE.DoubleSide
});
}
});
mesh = obj;
scene.add(obj);
});
//light
var light = new THREE.DirectionalLight(0xffffff);
light.position.set(10,10,5);
scene.add(light);
//render
id = setInterval(draw, 20);
function draw() {
renderer.render(scene, camera);
mesh.rotation.y += 0.01;
if (mesh.rotation.y > Math.PI * 2) {
mesh.rotation.y -= Math.PI * 2;
}
}
</script>
</body>
</html>