直接上代码(我这用的vue3)
创建画布、相机、场景、灯光(此处以环境光为例)
<template>
//创建画布
<div class=”canvas-container”>
<canvas id=”web3d” style=”width: 100%;height: 100%;”></canvas>
</div>
</template>
<script setup>
import { onMounted, ref } from ‘vue’;
import * as THREE from ‘three’;
//通过THREE对象访问Three.js库中的所有功能、类和方法。
import { OrbitControls } from ‘three/examples/jsm/controls/OrbitControls’;
//OrbitControls是Three.js中的控制器
const scene = new THREE.Scene()
const canvas = ref()
const renderer = ref()
const camera = ref()
onMounted(()=>{
canvas.value = document.getElementById(“web3d”);
//获取画布元素
renderer.value = new THREE.WebGLRenderer({ canvas: canvas.value});
//将画布元素交给WebGLRenderer渲染器
camera.value = new THREE.PerspectiveCamera(75, 500 / 400);
//创建一个透视相机参数为(视野角度、宽高比、近裁剪面距离和远裁剪面距离)
scene.add(new THREE.AmbientLight(0xffffff, 5))
//场景添加一个环境光
renderer.value.render(scene, camera.value);
//WebGLRenderer渲染器绘制场景和相机
const controls = new OrbitControls(camera.value, renderer.value.domElement);
//添加交互控制器
})
</script>
2.gltf、glb格式文件加载

import { GLTFLoader } from ‘three/examples/jsm/loaders/GLTFLoader’
const gltfLoader = new GLTFLoader
const url = xxxx.glb || xxx.gltf
// 使用 GLTFLoader 加载模型文件
gltfLoader.load(url, (result) => {
const model = result.scene;
scene.add(model);
// 将模型添加到场景中
const mixer = new THREE.AnimationMixer(model);
// 创建 AnimationMixer 对象,用于管理模型的动画
function animate() {
requestAnimationFrame(animate);
// 更新动画
if(mixer){
mixer.update(0.01);
}
renderer.value.render(scene, camera.value);
// 重新渲染
}
animate();
});
3.fbx格式文件加载

import { FBXLoader } from ‘three/examples/jsm/loaders/FBXLoader’
const fbxLoader = new FBXLoader
const url = xxxx.fbx
// 使用 GLTFLoader 加载模型文件
fbxLoader.load(url, (result) => {
const model = result;
scene.add(model);
// 将模型添加到场景中
const mixer = new THREE.AnimationMixer(model);
// 创建 AnimationMixer 对象,用于管理模型的动画
function animate() {
requestAnimationFrame(animate);
// 更新动画
if(mixer){
mixer.update(0.01);
}
renderer.value.render(scene, camera.value);
// 重新渲染
}
animate();
});
4.obj文件格式加载

import { OBJLoader } from ‘three/examples/jsm/loaders/OBJLoader’;
const objLoader = new OBJLoader();
const url = xxxx.obj
objLoader.load( url, (result) => {
const material = new THREE.MeshBasicMaterial({ color: 0xffffff });
// 设置模型的材质
result.traverse((child) => {
if (child instanceof THREE.Mesh) {
child.material = material;
}
});
scene.add(result);
// 将模型添加到场景中
}
5.仅使用remove函数只是移除场景中的对象,并没有释放几何体和内存占用所以需要使用dispose释放占用内存

scene.traverse((v) => {
if (v.type === ‘Mesh’) {
v.geometry.dispose(); // 释放几何体占用的内存
v.material.dispose(); // 释放材质占用的内存
scene.remove(v); // 从场景中移除网格对象
}
});
文章知识点与官方知识档案匹配,可进一步学习相关知识

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性

GLB下载网(glbxz.com)gltf文件下载-glb格式下载-模型制作 » Three.js 常用格式加载(obj、gltf、fbx、glb)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载要提取码
百度网盘提取码都是gltf。
分享过期和重复下载怎么办
分享过期请使用备份下载,重复下载是不另扣费的,请放心下载。
模型和平台不兼容怎么办
可以用网站在线编辑功能,修改模型属性,大小,方向,坐标,中心,透明等问题,然后重新导出既可https://glbxz.com/38636.html
  • 7879会员数(个)
  • 16034资源数(个)
  • 40本周更新(个)
  • 39125 今日更新(个)
  • 1139稳定运行(天)

提供最优质的资源集合

加入VIP
开通VIP 享更多特权,建议使用 QQ 登录
×