Three.js 和 Vuejs 结合使用

发布于 2021-08-27 19:26:28 字数 2927 浏览 2034 评论 0

当前搜到这篇文章,说明你对 Threejs 引擎和前框框架 vuejs 都有一定的了解,下面就简单说下在 vue-cli 脚手架中如何使用 threejs。

.html 文件中引入 vuejs

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

引入 vuejs 相关的 UI 组件库,可以直接使用相关按钮、进度条等UI组件

<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

vue-cli 脚手架中使用 Three.js

npm 安装 three.js 依赖

npm install three --save-dev

引入 three.js,获得 threejs 库全部 API,在 vuejs

import * as THREE from 'three';
// 和在.html文件中一样使用threejs类
...
var Scene = new THREE.Scene();
...
var geo = new THREE.BoxGeometry(20,30,50)

import 方式获得 threejs 具体的类

import { Scene } from 'three';
const scene = new Scene();

vue-cli 脚手架中使用 examples 目录下 threejs 扩展库

安装依赖

npm i imports-loader exports-loader --save-dev

配置文件 \build\webpack.base.conf.js

module: {
  rules: [
    // OrbitControls.js库使用
    {
      test: require.resolve("three/examples/js/controls/OrbitControls"),
      use: "imports-loader?THREE=three"
    },
    {
      test: require.resolve("three/examples/js/controls/OrbitControls"),
      use: "exports-loader?THREE.OrbitControls"
    },
    // CSS2DRenderer.js库使用
    {
      test: require.resolve("three/examples/js/renderers/CSS2DRenderer.js"),
      use: "imports-loader?THREE=three"
    },
    {
      test: require.resolve("three/examples/js/renderers/CSS2DRenderer.js"),
      use: "exports-loader?THREE.CSS2DRenderer"
    },
    // OBJLoader.js库使用
    {
      test: require.resolve("three/examples/js/loaders/OBJLoader.js"),
      use: "imports-loader?THREE=three"
    },
    {
      test: require.resolve("three/examples/js/loaders/OBJLoader.js"),
      use: "exports-loader?THREE.OBJLoader"
    },
...
  ]
},

在使用的 .vue 文件引入要使用的模块

// 引入three.js
import * as THREE from 'three';
import OrbitControls from 'three/examples/js/controls/OrbitControls';
// 引入examples目录下threejs扩展库
var controls = new OrbitControls(camera);
import * as THREE from 'three';
import OBJLoader from 'three/examples/js/loaders/OBJLoader';
var OBJLoader = new OBJLoader();
import * as THREE from 'three';
import  {CSS2DRenderer} from 'three/examples/js/renderers/CSS2DRenderer';
var labelRenderer = new CSS2DRenderer();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

想挽留

暂无简介

0 文章
0 评论
20371 人气
更多

推荐作者

qq_Yqvrrd

文章 0 评论 0

2503248646

文章 0 评论 0

浮生未歇

文章 0 评论 0

养猫人

文章 0 评论 0

第七度阳光i

文章 0 评论 0

新雨望断虹

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文