three.js怎么引入外部3D(GLTF)文件?
init() {
// 创建3D场景对象Scene
const scene = new THREE.Scene();
// 定义相机输出画布的尺寸(单位:像素px)
const width = 800; //宽度
const height = 500; //高度
// 实例化一个透视投影相机对象
// 30:视场角度, width / height:Canvas画布宽高比, 1:近裁截面, 3000:远裁截面
const camera = new THREE.PerspectiveCamera(30, width / height, 1, 3000);
// 根据需要设置相机位置具体值
camera.position.set(200, 200, 200);
//相机观察目标指向Threejs 3D空间中某个位置
camera.lookAt(0, 0, 0); //坐标原点
// 创建GLTF加载器对象
const loader = new GLTFLoader();
loader.load("static/wjj.gltf", function (gltf) {
console.log("控制台查看加载gltf文件返回的对象结构", gltf);
console.log("gltf对象场景属性", gltf.scene);
gltf.scene.scale.set(20, 20, 20);
gltf.scene.position.set(-30, -60, 0);
// 返回的场景对象gltf.scene插入到threejs场景中
scene.add(gltf.scene);
renderer.render(scene, camera);
});
//点光源:两个参数分别表示光源颜色和光照强度
// 参数1:0xffffff是纯白光,表示光源颜色
// 参数2:1.0,表示光照强度,可以根据需要调整
const pointLight = new THREE.PointLight(0xffffff, 20);
// 设置聚光光源位置
pointLight.position.set(0, 0, 20);
scene.add(pointLight); //光源添加到场景中
const shadowLight = new THREE.DirectionalLight(0xffffff);
shadowLight.position.set(0, 10, 20);
scene.add(shadowLight); //光源添加到场景中
// 创建渲染器对象
const renderer = new THREE.WebGLRenderer();
renderer.setClearColor(0x000000, 0.2);
renderer.setSize(width, height); //设置three.js渲染区域的尺寸(像素px)
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.render(scene, camera); //执行渲染操作
document.getElementById("three").appendChild(renderer.domElement);
// 设置相机控件轨道控制器OrbitControls
const controls = new OrbitControls(camera, renderer.domElement);
// 如果OrbitControls改变了相机参数,重新调用渲染器渲染三维场景
controls.addEventListener("change", function () {
renderer.render(scene, camera); //执行渲染操作
}); //监听鼠标、键盘事件
// AxesHelper:辅助观察的坐标系
// const axesHelper = new THREE.AxesHelper(150);
// scene.add(axesHelper);
},
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律