小程序开发定制Three.js 渲染glb,gltf模型(保姆级教程)

1.准备工作

小程序开发定制将下列文件在的包中找到,小程序开发定制注意的是我这里使用的小程序开发定制是模块化版本的,这里不知道模块化的,可以先去看一下es6的模块化。


控制器: OrbitControls.js

加载器:GLTFLoader.js

材质: RoomEnvironment.js 和 MeshoptDecoder.js

模型文件: 我这里用的是glb(最后面有源码链接)


将上面的文件准备好后就可以开始进行下一步了

2.开始开发

1.在body中新建一个div用来承载three.js创建canvas标签

2.把准备好的文件引入,注意script标签加上type=module

部分代码在这,完成源码在下面,这里方便理解 

  1. <body>
  2. <div id="WebGL-output"></div>
  3. </body>
  4. <script type="module">
  5. import *as THREE from "./js/three.module.js";
  6. import { OrbitControls } from './js/OrbitControls.js';
  7. import { GLTFLoader } from './js/GLTFLoader.js'
  8. import { RoomEnvironment } from './js/RoomEnvironment.js';
  9. import { MeshoptDecoder } from './js/meshopt_decoder.module.js'
  10. </script>

到这里准备工作才正式完成

注意:引用文件中有些事依赖于three.module.js这个文件夹的,需要去源码当中把路径修改,这里举例一个

2.初始化场景,相机,控制器

  1. let scene, camera, renderer, control
  2. function init() {
  3. // 场景,相机
  4. scene = new THREE.Scene();
  5. scene.background = new THREE.Color(0xbbbbbb);
  6. camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 2000);
  7. camera.position.set(20, 100, 170);
  8. // 渲染器
  9. renderer = new THREE.WebGLRenderer();
  10. renderer.setSize(window.innerWidth, window.innerHeight);
  11. document.body.appendChild(renderer.domElement);
  12. // 地表格
  13. const grid = new THREE.GridHelper(500, 100, 0xffffff, 0xffffff);
  14. grid.material.opacity = 0.5;
  15. grid.material.depthWrite = false;
  16. grid.material.transparent = true;
  17. scene.add(grid);
  18. // 材质
  19. const environment = new RoomEnvironment();
  20. const pmremGenerator = new THREE.PMREMGenerator(renderer);
  21. scene.environment = pmremGenerator.fromScene(environment).texture;
  22. // 控制器
  23. let control = new OrbitControls(camera, renderer.domElement);
  24. const axesHelper = new THREE.AxesHelper(14);
  25. scene.add(axesHelper);
  26. function animate() {
  27. requestAnimationFrame(animate);
  28. renderer.render(scene, camera);
  29. };
  30. animate();
  31. }
  32. init()

完成这一步时,你可以看到下面的内容,证明你的场景渲染出来了

接下来就是渲染glb模型了 

  1. function loader() {
  2. const loader = new GLTFLoader().setPath('./model/');
  3. loader.load('renWu.glb', function (gltf) {
  4. gltf.scene.position.set(0,0,2)
  5. scene.add(gltf.scene);
  6. renderer.render(scene, camera);
  7. });
  8. }
  9. load() // 调用函数渲染

此时就可以把glb文件简单的渲染出来了,我的glb文件有问题,所以渲染出来模型比较小

为了让模型展示更好,我这里采取了比较简单的调整摄像头角度

 

把图中的数值调整成1,就可以看到正常的模型了,如下图

教程到这里就结束了,文中所用到的源码在这

源码链接:https://pan.baidu.com/s/1YNDE7SIfTgOFgfUJvPzAhQ?pwd=4plc 

源码密码:4plc 

都看到这里了,点个赞吧 给点动力出教程哇

渲染带动画的glb模型

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发