three.js一步一步来--如何画出一个转动的正方体
基础知识--正方体代码如下
<template>
<div style="width:1000px; height:800px">
<h1>正方体</h1>
<div ref="myBody" />
</div>
</template>
<script>
import * as THREE from 'three'
import { OBJLoader, MTLLoader } from 'three-obj-mtl-loader'
// import MTLLoader from 'three-mtl-loader';
// import OBJLoader from 'three-obj-loader';
import { CSS2DRenderer, CSS2DObject } from 'three-css2drender'
// import { Geometry, Material, Scene, WebGLBufferRenderer } from 'three';
// const OrbitControls = require('three-orbit-controls')(THREE);
export default {
data() {
return {
scene: new THREE.Scene(), // 场景
camera: new THREE.PerspectiveCamera(
75,
window.innerWidth / window.innerHeight,
1,
1000
), // 透视相机
renderer: new THREE.WebGLRenderer(), // 渲染器
geometry: new THREE.BoxBufferGeometry(1, 1, 1), // 正方体
material: new THREE.MeshBasicMaterial({ color: 0x00ff00 }), // 设置材料
cube: new THREE.Mesh(this.geometry, this.material) // 合起來
}
},
mounted() {
this.init()
this.render()
},
methods: {
consoleObj() {
console.log(THREE.REVISION)
console.log(OBJLoader)
console.log(MTLLoader)
console.log(CSS2DRenderer)
console.log(CSS2DObject)
},
init() {
this.renderer.setClearColor('white') // 渲染器背景色
this.renderer.setSize(window.innerWidth, window.innerHeight) // 渲染器窗口大小
this.$refs.myBody.appendChild(this.renderer.domElement) // 放到界面
this.cube = new THREE.Mesh(this.geometry, this.material) // 不能放在上面,要不然出不來
this.scene.add(this.cube) // 不能放在上面,要不然出不來
this.camera.position.z = 5
},
render() {
requestAnimationFrame(this.render) // 游戏循环
this.cube.rotation.x += 0.1
this.cube.rotation.y += 0.1
this.renderer.render(this.scene, this.camera) // 渲染
}
}
}
</script>
<style lang="less" scoped></style>
标签:
three.js
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
2019-09-03 小知识点---数组去重
2019-09-03 深拷贝和浅拷贝的区别
2019-09-03 flutter学习第一天笔记-----学习资源总结