首页 > 其他分享 >vue3+three入门一

vue3+three入门一

时间:2024-08-13 13:27:06浏览次数:9  
标签:const 入门 THREE value three renderer vue3 new animate

<script setup lang="ts">
import * as THREE from 'three';
import {onMounted, ref} from "vue";
import { ArcballControls} from "three/examples/jsm/controls/ArcballControls";

const containerRef = ref(null)
const width = ref()
const height = ref()
const animateKey = ref(false)
let cube, camera, renderer,scene;
onMounted(() => {
  width.value = containerRef.value.offsetWidth;
  height.value = containerRef.value.offsetHeight;
  initContainer()
})


const initContainer = () => {
  scene = new THREE.Scene(); // 创建场景
  camera = new THREE.PerspectiveCamera( 75, width.value / height.value, 0.1, 1000 );
  // fov:视野角度, aspect:长宽比,near近截面,far:远截面
  renderer = new THREE.WebGLRenderer();// 创建渲染器
  renderer.setSize( width.value , height.value ); // 设置渲染器尺寸
  containerRef.value.appendChild( renderer.domElement);
  const geometry = new THREE.BoxGeometry( 50, 50, 10 ); // 模型
  const material = new THREE.MeshBasicMaterial( { color: 0xff0033 } ); // 材质
  cube = new THREE.Mesh( geometry, material ); // 网格 需包含模型和材质

  // 控制器
  const controls = new ArcballControls( camera, renderer.domElement, scene );
  controls.addEventListener( 'change', function () {
    renderer.render( scene, camera );
  } );

  scene.add( cube ); // 像场景中添加模型
  camera.position.set( 0, 20, 100 );// 设置相机的位置
  controls.update();// 控制器
  animateKey.value = true
  // 因为animate自启动时页面还没加完成,所以加了个变量,当animateKey为true时才执行animate内的方法
  animate()
}

function animate() {
  if(animateKey.value) {
    requestAnimationFrame( animate );
    renderer.render( scene, camera );
  }
}
animate()

</script>

<template>
  <div class="container" >
    <div class="container_canvas" ref="containerRef"></div>
  </div>
</template>

<style scoped lang="less">
.container {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border: 1px solid red;
  .container_canvas {
    width: 80%;
    height: 80%;
  }
}
</style>

 

标签:const,入门,THREE,value,three,renderer,vue3,new,animate
From: https://www.cnblogs.com/xytx906/p/18356674

相关文章

  • 【产品经理修炼之道】- 优惠券系统从入门到精通(四十五)
    在高并发情况下我是这样解决单用户超领优惠券问题问题抛出在近期的项目里面有一个功能是领取优惠券的功能,问题描述:每一个优惠券一共发行多少张,每个用户可以领取多少张:如:A优惠券一共发行120张,每一个用户可以领取140张,当一个用户领取优惠券成功的时候,把领取的记录写入到另......
  • 算法入门
    首先,了解一下集成学习及Boosting算法。集成学习归属于机器学习,他是一种“训练思路”,并不是某种具体的方法或者算法。现实生活中,大家都知道“人多力量大”,“3个臭皮匠顶个诸葛亮”。而集成学习的核心思路就是“人多力量大”,它并没有创造出新的算法,而是把已有的算法进行结合,从而......
  • 在Vue3中实现自定义指令
    一、前言我们需要明白为什么需要自定义一个指令,其实就是想更加简洁地重复使用操作DOM的逻辑,这就和组件化和组合式函数差不多。不管是Vue内置的指令还是自定义的指令,都有类似于组件的生命周期,我们可以在不同的生命周期完成不同的逻辑操作,并绑定到组件元素上,这样就产生了自定义指......
  • 【图像去噪】论文复现:新手入门必看!DnCNN的Pytorch源码训练测试全流程解析!为源码做详细
    第一次来请先看【专栏介绍文章】:源码只提供了noiselevel为25的DnCNN-S模型文件。本文末尾有完整代码和训练好的σ=15,25,50的DnCNN-S、σ∈[0,55]的DnCNN-B和CDnCNN-B、DnCNN-3共6个模型文件!读者可以自行下载!本文亮点:以官方Pytorch源代码为基础,在DnCNN-S的基础上,增添Dn......
  • 游戏安全入门-扫雷分析&远程线程注入
    前言无论学习什么,首先,我们应该有个目标,那么入门windows游戏安全,脑海中浮现出来的一个游戏--扫雷,一款家喻户晓的游戏,虽然已经被大家分析的不能再透了,但是我觉得自己去分析一下还是极好的,把它作为一个小目标再好不过了。我们编写一个妙妙小工具,工具要求实现以下功能:时间暂停、修......
  • vue3的defineAsyncComponent是如何实现异步组件的呢?
    前言在上一篇给我5分钟,保证教会你在vue3中动态加载远程组件文章中,我们通过defineAsyncComponent实现了动态加载远程组件。这篇文章我们将通过debug源码的方式来带你搞清楚defineAsyncComponent是如何实现异步组件的。注:本文使用的vue版本为3.4.19欧阳写了一本开源电子书vue3编......
  • TypeScript 入门
    0x01概述TypeScript官网TypeScript是一种基于JavaScript构建的强类型编程语言JavaScript的超集,即JavaScript是TypeScript的子集JavaScript类型化,即在JavaScript基础上添加类型系统优势:提供可读性和可维护性在编译阶段检查并报错环境:安装NodeJ......
  • C ++ 也可以搭建Web?高性能的 C++ Web 开发框架 CPPCMS + MySQL 实现快速入门案例
    什么是CPPCMS?CppCMS是一个高性能的C++Web开发框架,专为构建快速、动态的网页应用而设计,特别适合高并发和低延迟的场景。其设计理念类似于Python的Django或RubyonRails,但针对C++提供了更细粒度的控制和更高效的性能。主要特点和优点1.高性能与并发处理​Cp......
  • Java基础入门18:File、IO 流1(方法递归、字符集、IO流-字节流)
    File和IO流FileFile是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。IO流用于读写数据的(可以读写文件,或网络中的数据...)File代表文件IO流用来读写数据File创建对象创建File类的对象注意:File对象既可以代表文件、也可以代表文......
  • Java入门基础16:集合框架1(Collection集合体系、List、Set)
    集合体系结构Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。collection集合体系Collection的常用方法packagecom.itchinajie.d1_collection;importjava.util.ArrayList;importjava.util.HashSet;/**目标:认识Collection体系的特点。*......