当前位置:   article > 正文

ThreeJS环境搭建

threejs环境搭建

ThreeJS介绍

ThreeJS是一款基于WebGL封装的在浏览器中运行的 3D 库,你可以用它来创造你所需要的一系列3D场景,如最近比较火的数字孪生、元宇宙可视化等等,如果你想深入学习Three.js,那么就跟着我的文章一起学习就好了。

如何搭建环境

ThreeJS的官网是 Three.js – JavaScript 3D Library ,上面提供了很多有用的文档和论坛连接,也提供了很多的demo案例,现在前端开发基本是基于框架,本文介绍使用VUE搭建ThreeJs环境,安装环境比较简单,使用npm直接安装threejs即可(本文使用的是128版本)。

npm install three@0.128.0

安装完之后就可以开发相应的功能了。

运行基本的场景

运行ThreeJS需要提供摄像机,场景和渲染器三种基本元素,常用的还有OrbitControls镜头控制器,下面是一个基本的ThreeJS场景代码,里面包含一个立方体,同时可以使用鼠标对他进行旋转移动和放缩的操作。

  1. <template>
  2. <div>
  3. <canvas id="gameContainer"> </canvas>
  4. </div>
  5. </template>
  6. <script>
  7. import * as THREE from "three";
  8. import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
  9. export default {
  10. data() {
  11. return {
  12. scene: null,
  13. camera: null,
  14. renderer: null,
  15. orbControl: null,
  16. };
  17. },
  18. mounted() {
  19. this.initScene();
  20. },
  21. methods: {
  22. initScene() {
  23. this.container = document.getElementById("gameContainer");
  24. let width = window.innerWidth, height = window.innerHeight;
  25. // 创建场景、摄像机和渲染器
  26. this.scene = new THREE.Scene();
  27. this.camera = new THREE.PerspectiveCamera();
  28. this.renderer = new THREE.WebGLRenderer({
  29. antialias: true,
  30. canvas: this.container,
  31. alpha: true,
  32. });
  33. this.renderer.setPixelRatio(window.devicePixelRatio);
  34. this.renderer.setSize(width, height);
  35. // 环境光
  36. const light = new THREE.AmbientLight(0xffffff, 1.0);
  37. this.scene.add(light);
  38. this.camera = new THREE.PerspectiveCamera(
  39. 75,
  40. width / height,
  41. 0.1,
  42. 1000
  43. );
  44. // 摄像机位置和角度
  45. this.camera.position.set(20, 20, 20);
  46. this.camera.lookAt(new THREE.Vector3(0, 0, 0));
  47. // 添加立方体
  48. const geometry = new THREE.BoxGeometry(2, 2, 2);
  49. const material = new THREE.MeshBasicMaterial({
  50. color: 0x00ffff,
  51. side: THREE.DoubleSide,
  52. });
  53. let box = new THREE.Mesh(geometry, material);
  54. box.receiveShadow = true;
  55. box.position.set(0, 0, 0);
  56. this.scene.add(box);
  57. // 添加控制器
  58. this.orbControl = new OrbitControls(
  59. this.camera,
  60. this.renderer.domElement
  61. );
  62. // 循环渲染
  63. window.requestAnimationFrame(() => {
  64. this._animate();
  65. });
  66. },
  67. _animate() {
  68. if (this.renderer) {
  69. this.renderer.render(this.scene, this.camera);
  70. }
  71. window.requestAnimationFrame(() => {
  72. this._animate();
  73. });
  74. },
  75. },
  76. };
  77. </script>
  78. <style lang="scss" scoped>
  79. #gameContainer {
  80. position: absolute;
  81. left: 0;
  82. right: 0;
  83. width: 100%;
  84. height: 100%;
  85. background-color: #000000;
  86. }
  87. </style>

屏幕中间会出现一个蓝色的立方体,如下图:

 至此一个基本的ThreeJS场景已经搭建好了,后续将会在此基础上累加效果和基本功能。如果想了解基本概念的可以去官网或者其他博客中查看。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/993515
推荐阅读
相关标签
  

闽ICP备14008679号