vue2+three.js(入门级)

news2024/10/5 14:23:59

20232.9.12今天我学习了如何使用vue2+three制作一个3d图形,效果:

 首先安装:

npm install three

相关代码: 

<!--3d基础版,实现单个3d图形-->
<template>
  <div>
    <div id="content"/>
  </div>
</template>
<script>
import * as THREE from 'three'

export default {
  data() {
    return {
      scene: null,//场景
      camera: null,//照相机
      renderer: null,//渲染器
      mesh: null,//物体
      light: null,//灯光
      num: 0,//增加物体
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    init() {
      // 创建场景
      this.createScene()
      // 创建照相机
      this.createCamera()
      // 创建渲染器
      this.createRenderer()
      // 创建灯光
      this.createLight()
      // 创建物体
      this.createMesh()
      // 触发
      this.render()
      this.animation()
    },
    // 创建场景
    createScene() {
      this.scene = new THREE.Scene()
    },
    // 创建照相机
    createCamera() {
      this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)
      this.camera.position.set(200, 200, 200)
      this.camera.lookAt(this.scene.position)
    },
    // 创建渲染器
    createRenderer() {
      this.renderer = new THREE.WebGLRenderer()
      this.renderer.setSize(window.innerWidth, window.innerHeight)
      this.renderer.setClearColor(new THREE.Color(0xffffff))
      document.getElementById('content').appendChild(this.renderer.domElement)
    },
    // 创建灯光
    createLight() {
      this.light = new THREE.DirectionalLight({
        color: 'red'
      })
      this.light.position.set(100, 100, 100)
      this.scene.add(this.light)
    },
    // 创建物体
    createMesh() {
      const geometry = new THREE.BoxGeometry(30, 30, 30)
      const material = new THREE.MeshLambertMaterial({
        color: 0x0000ff
      })
      this.mesh = new THREE.Mesh(geometry, material)
      this.scene.add(this.mesh)
      this.render()
    },
    //触发
    render() {
      this.renderer.render(this.scene, this.camera)
    },
    animation() {
      let time = new Date() * 0.001;
      // 对物体旋转
      // this.mesh.position.set(100 * Math.cos(time), 100 * Math.sin(time), 0)
      // 对照相机旋转
      // this.camera.position.set(100 * Math.cos(time), 100 * Math.sin(time), 0)
      // this.camera.lookAt(this.scene.position)
      this.render()
      requestAnimationFrame(this.animation)
    }
  }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1003810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac端交互式原型设计 Axure RP 8 for Mac汉化

Axure RP 8是一款专业的交互原型设计工具&#xff0c;它被广泛应用于用户体验设计、界面设计和产品原型制作等领域。该软件提供了丰富的功能和工具&#xff0c;使用户能够创建出具有高度交互性和可视化效果的原型。 Axure RP 8的主要特点和功能包括&#xff1a; 1. 快速原型&a…

UI设计怎么切图?初学者入门必读篇

切图是开发无法使用代码直接实现的元素&#xff0c;是UI设计师的重要产出成果和交付物。切图看似简单&#xff0c;实则也有超级多的专业细节需要了解&#xff0c;以及各种方法来提高切图效率。本文将全面介绍UI设计怎么切图所需要的所有知识。 本文大纲&#xff1a; UI设计切图…

商城售后系统_换货、维修、退货退款_OctShop

OctShop商城售后系统&#xff1a;售后分为&#xff1a;换货&#xff0c;返修&#xff0c;退货退款三种。售后即支持物流售后也支持上门售后服务。售后信息由&#xff1a;申请信息&#xff0c;问题图片凭证&#xff0c;发货信息&#xff0c;发回信息&#xff0c;上门服务信息等组…

Java后端开发工程师学习路线是什么?

击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 关于这个问题&#xff0c;我之前也是回答过好几遍了&#xff0c;当然也给很多知友带来了帮助~ 虽然目前互联网行情不是太景气&#xff0c;但是对于求职找工作的朋友来说&#xff0c;Java可能仍然…

element el-table 设置fixed导致行错乱问题

首先看有问题的样式&#xff1a; 解决&#xff1a; // 解决左右 对不齐 的情况 // el-table 左右有列固定时&#xff0c;fixed为left和right时&#xff0c;行未对齐解决办法 // * 产生原因&#xff1a; el-table底部有滚动条&#xff0c;固定列底部没有滚动条 // * 解决办法&…

数据结构之位图【原理与实现】

文章目录 前言一、位图bitap是什么&#xff1f;二、位图的引用场景1、查询统计、定位查询&#xff0c;排序&#xff0c;去重2、取两个集合的交集&#xff0c;并集等 三、位图C实现 前言 bitmap意为位图&#xff0c;它的每一位用于存放状态&#xff0c;适用于大规模并且不重复的…

服务器数据恢复-EVA存储多块硬盘磁头和盘片损坏离线的数据恢复案例

服务器数据恢复环境&#xff1a; HP EVA某型号存储&#xff0c;存储中一共有23块磁盘&#xff0c;上层映射给一台windows server服务器上。 服务器故障&检测&分析&#xff1a; 该EVA存储上三块硬盘指示灯显示黄色&#xff0c;此时存储设备还能正常工作。运维更换显示黄…

Dell 服务器常见报错信息汇总

Dell 服务器常见报错汇总 如果有别的报错信息欢迎补充

电子烟行业常用的英文表达

1. 电子烟的各种表达 a) 电子烟 i. Electronic-cigarette, ii. Electronic smoke, iii. electronic cigarettes iv. Electric cigarette, v. E-Cigarettes vi. e-cigarette, vii. e-Cig viii. E cigar,e-cigar 电子烟雪茄 2. 电子烟特指词汇及衍生 a) VAPE i. Vapo…

计网第五章(运输层)(一)

在前面的博客中&#xff0c;总是说主机之间进行通信。但实际上通信的真正的实体是位于通信两端主机中的进程。 一、运输层基本概述 运输层的任务就是为运行在不同主机上的应用进程提供直接的通信服务&#xff0c;运输层的协议又称为端到端协议。运输层中使用不同的端口来对应…

ARM接口编程—PWM(exynos 4412平台)

PWM简介 PWM(Pulse Width Modulation)即脉冲宽度调制&#xff0c;通过对脉冲的宽度进行调制&#xff0c;来获得所需要波形 PWM参数 周期 一次高低电平所占用的时间 占空比 一个周期中高电平时间与整个周期的比例称为占空比 PWM工作原理 pwm原理图 由电路原理图可知道蜂鸣…

在Windows系统上用Nginx搭建图片服务器

1、nginx.conf中的配置&#xff1a; server { listen 8088; #server_name localhost; server_name 127.0.0.1 ; #charset koi8-r; #charset utf-8,gbk; charset utf-8; location ~ .*.(gif|jpg|jpeg|png)$ { e…

恒运资本:减肥药概念涨疯了!特斯拉一夜暴涨5800亿市值,汽车股狂飙

今天早盘&#xff0c;A股微幅震荡&#xff0c;主要股指涨跌互现&#xff0c;两市成交呈萎缩趋势。 盘面上&#xff0c;减肥药、轿车、工业大麻、鸡肉等板块涨幅居前&#xff0c;光刻机、稳妥、互联网、知识产权等板块跌幅居前。北上资金净流出1.99亿元。 减肥药概念飙涨 续昨…

动态规划总结(持续更新中……)

注意&#xff1a;我这里定义的所有dp的索引相对于实际问题都是从1开始的&#xff0c;也就是空间长度会比实际大1&#xff0c;这样的好处是在部分题目场景下不需要条件判断也不会越界。 字符串/数组类 区间 1.最长回文子串 dp定义 dp[i][j]表示第i个字符到第j个字符组成的子…

一文了解VR全景,VR全景有哪些优势?

引言&#xff1a; VR全景技术近年来崭露头角&#xff0c;已经成为宣传领域的一大亮点。不仅在娱乐&#xff0c;旅游行业广泛应用&#xff0c;还在商业和教育等领域崭露头角。 一&#xff0e;什么是VR全景&#xff1f; VR全景&#xff0c;全名Virtual Reality Panorama&#x…

Python代码扫描:新一代 Python Linter工具Ruff -极力推荐-快的原因是Rust写的?

目录 RUFF概述 特点 安装和使用 应用场景 配置 编辑器集成 PyCharm(外部工具) Ruff的规则 Ruff速度快的几个原因 最后 注意&#xff1a;后续技术分享&#xff0c;第一时间更新&#xff0c;以及更多更及时的技术资讯和学习技术资料&#xff0c;将在公众号CTO Plus发布…

多线程和并发编程(2)—CAS和Atomic实现的非阻塞同步

在并发编程中实现原子操作可以使用锁&#xff0c;锁机制满足基本的需求是没有问题的了&#xff0c;但是有的时候我们的需求并非这么简单&#xff0c;我们需要更有效&#xff0c;更加灵活的机制&#xff0c;synchronized关键字是基于阻塞的锁机制&#xff0c;也就是说当一个线程…

零代码编程:用ChatGPT来批量删除特定文件

一个文件夹中有很多个文件重复了&#xff0c;重复的文件中都含有“&#xff08;1&#xff09;”这样的字符&#xff0c;需要把所有这些文件批量删除掉。 在ChatGPT中输入如下提示词&#xff1a; 你是一个Python编程专家&#xff0c;写一段代码完成批量删除文件的任务&#xff…

【java】【SSM框架系列】【四】SpringBoot

目录 一、SpringBoot简介 1.1 入门案例 1.1.1 案例 1.1.2 Spring程序与SpringBoot区别 1.1.3 SpringBoot项目快速启动 1.2 SpringBoot概述 二、基础配置 2.1 配置文件格式 2.1.1 配置文件格式&#xff08;3种&#xff09; 2.1.2 配置文件间的加载优先级&#xff08;了解…

电视机顶盒哪个牌子好?拆机达人盘点网络电视机顶盒排名

电视机顶盒哪个牌子好&#xff1f;在挑选电视机顶盒的时候&#xff0c;我们要注意的是盒子的芯片、内存以及系统和操作等等方面全都要衡量&#xff0c;根据我多年拆机经验来说&#xff0c;有些产品存在虚标配置、偷工减料等情况&#xff0c;在选购时不懂行可以参考以下网络电视…