当前位置: 首页 > article >正文

7.three.js通用几何体加载与gltf模型、obj模型加载

7.three.js通用几何体加载与gltf模型、obj模型加载

1.几何体加载

three.js中提供了各种各样通用的几何体对象,方便我们进行通用几何体的构建,不必通过geometry基类来自定义顶点、面信息来进行构建,简化了我们开发。如BoxGeometry(方形几何体)、CircleGeometry(圆平面几何体)、CylinderGeometry(圆柱几何体)等等。

// BoxGeometry(方形几何体)
var geometry = new THREE.BoxGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
var cube = new THREE.Mesh( geometry, material );
scene.add( cube );

//CircleGeometry(圆平面几何体)
var geometry = new THREE.CircleGeometry( 5, 32 );
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
var circle = new THREE.Mesh( geometry, material );
scene.add( circle );

//CylinderGeometry(圆柱几何体)
var geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );
var material = new THREE.MeshBasicMaterial( {color: 0xffff00} );
var cylinder = new THREE.Mesh( geometry, material );
scene.add( cylinder );

2.gltf模型加载

three.js可以使用THREE.GLTFLoader加载gltf(或者glb)模型。THREE.GLTFLoader需要引入依赖库:GLTFLoader。

该依赖库在源码包中,如下:

<script src="../three.js-master/examples/js/loaders/GLTFLoader.js"></script>
 //加载器
        var loader = new THREE.GLTFLoader();

        //THREE.DRACOLoader.setDecoderPath( '/examples/js/libs/draco' );
        //loader.setDRACOLoader( new THREE.DRACOLoader() );

        loader.load(
          "./data/ztc-yellow-new.gltf",
          function (gltf) {
            scene.add(gltf.scene);
          },

          //加载回调
          function (xhr) {
            console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
          },
          //加载失败回调
          function (error) {
            console.log("An error happened");
          }
        );

3.obj模型加载

three.js可以使用THREE.OBJLoader加载OBJ模型。THREE.OBJLoader需要引入依赖库:OBJLoader。

如果obj模型有纹理文件,则需要引入THREE.MTLLoader先加载纹理文件,THREE.MTLLoader需要引入依赖库:MTLLoader。

该依赖库在源码包中,如下:

<script src="../three.js-master/examples/js/loaders/OBJLoader.js"></script>
<script src="../three.js-master/examples/js/loaders/MTLLoader.js"></script>
 //先加载材质
        const mtlLoader = new THREE.MTLLoader();
        mtlLoader.setPath("./data/obj/male02/");
        mtlLoader.load("male02.mtl", (mtl) => {
          mtl.preload();

          //再加载模型
          const objLoader = new THREE.OBJLoader();
          objLoader.setMaterials(mtl);
          objLoader.load(
            "./data/obj/male02/male02.obj",
            function (root) {
              scene.add(root);
            },

            //加载回调
            function (xhr) {
              console.log((xhr.loaded / xhr.total) * 100 + "% loaded");
            },
            //加载失败回调
            function (error) {
              console.log("An error happened");
            }
          );
        });

案例中的obj和gltf文件下载:

【免费】一些开发用的obj模型、gltf模型、glb模型资源-CSDN文库

视频学习地址:https://www.bilibili.com/video/BV1NZy5YiEWk/


http://www.kler.cn/news/360604.html

相关文章:

  • 下载安装Qt6时建议勾选的组件
  • Golang使用viper读取配置到结构体,但是获取的数据为空
  • 开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序助力个人品牌发展
  • cefsharp 88.2.90.0(Chromium 88.0.4324.182)支持H264视频播放-PDF预览 老版本回顾系列体验-100以下版本
  • 动态创建 AOP
  • linux c国际化
  • 如何看待AI技术的应用前景?
  • 2024.10月18日- Vue2组件开发(3)
  • 在Aidlux融合系统中基于aildlite2版本适配yolov5目标检测模型
  • 现代数字信号处理I-P4 CRLB+LMMSE 学习笔记
  • AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表
  • 源代码加密技术的一大新方向!
  • 软件测试(基础+手动测试+接口测试)
  • 前端js html css 基础巩固4
  • 共筑华芯|首届“SEMiBAY湾芯展”龙华区科技创新局助力华芯邦科技携第四代半导体芯星亮相湾区半导体产业生态博览会,诚邀您莅临参观指导
  • 【Linux】僵尸进程和孤儿进程
  • 海康相 机
  • docker安装elasticsearch和ik分词器
  • 《地下蚁国》风灵月影十项修改器使用教程
  • 【Power Query】List.Select 筛选列表