<script src="../build/three.js"></script>
<script src="js/controls/OrbitControls.js"></script> // 相机控件
<script src="js/loaders/OBJLoader.js"></script> // obj 模型
<script src="js/loaders/GLTFLoader.js"></script> // gltf || glb 模型
<script>
// 三维场景
const scene = new THREE.Scene();
// obj 模型加载
const loader = new THREE.OBJLoader();
// gltf 模型加载
// const loader = new THREE.GLTFLoader();
const width = window.innerWidth; //宽度
const height = window.innerHeight; //高度
// loader.load(
// "./models/gltf/demo/apple/scene.gltf",
// function (gltf) {
// console.log("控制台查看加载gltf文件返回的对象结构", gltf);
// console.log("gltf对象场景属性", gltf.scene);
// scene.add(gltf.scene);
// },
// undefined,
// (error) => {
// console.error(error);
// }
// );
loader.load(
"./models/obj/Banana_01/Banana_01_MESH.obj",
function (loadedMesh) {
// 贴图
loadedMesh.children[0].material.map = new THREE.TextureLoader().load(
"./models/obj/Banana_01/Banana_01_DIFF.png"
);
loadedMesh.scale.set(100, 100, 100);
scene.add(loadedMesh);
},
undefined,
(error) => {
console.error(error);
}
);
const lightness = new THREE.HemisphereLight(0xffffff, 0x444444);
lightness.position.set(0, 20, 0);
scene.add(lightness);
const shadowLight = new THREE.DirectionalLight(0xffffff);
shadowLight.position.set(0, 20, 10);
scene.add(shadowLight);
// 辅助线
scene.add(new THREE.AxisHelper(50));
// 相机
const camera = new THREE.PerspectiveCamera(45, width / height, 0.1, 2000);
camera.position.set(0, 0, 0);
camera.lookAt(0, 0, 0);
// WebGL渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
//three.js执行渲染命令会输出一个canvas画布(HTML元素),你可以插入到web页面中
document.body.appendChild(renderer.domElement);
const controls = new THREE.OrbitControls(camera, renderer.domElement);
// 相机控件.target属性在OrbitControls.js内部表示相机目标观察点,默认0,0,0
// console.log('controls.target', controls.target);
controls.target.set(100, 0, 0);
controls.update(); //update()函数内会执行camera.lookAt(controls.targe)
// 渲染场景
function render() {
renderer.render(scene, camera);
requestAnimationFrame(render);
}
render();
</script>
Threejs 导入OBJ、GLTF、GLB 模型
发布时间 2023-11-20 16:08:42作者: 东八区