vue+threeJs 生成一个圆柱体

article/2025/7/18 6:40:26

        嗨,我是小路。今天主要和大家分享的主题是“vue+threeJs 生成一个圆柱体”。        

案例示例图

1.CylinderGeometry

定义:创造一个圆柱体。

属性列表列表说明

radiusTop

顶部半径

radiusBottom

底部半径

height

radialSegments

横向分段(光滑程度)

heightSegments

纵向分段

openEnded

是否有盖


二、实例代码

<!--创建一个圆柱体-->
<template><div class="pageBox"><div class="leftBox" ref="leftRef"></div></div></template>
<script setup>
import { onMounted, onUnmounted, reactive, ref } from 'vue';
import * as THREE from 'three';
// 引入轨道控制器扩展库OrbitControls.js
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { getRandomColor, createLight } from '../utils/commonThree';
const leftRef = ref();
// 定义相机输出画布的尺寸(单位:像素px)
let width = window.innerWidth; //宽度
let height = window.innerHeight; //高度
// 创建3D场景对象Scene
const scene = new THREE.Scene();
let bgColor = getRandomColor();
//设置背景色
scene.background = new THREE.Color(bgColor);
console.log('bgColor',bgColor);const camera = new THREE.PerspectiveCamera(75, width / height, 1, 10000);
//三角形缩放过大时,会形成多种三角形形成的背景图
camera.position.z = 300;// 创建渲染器对象
const renderer = new THREE.WebGLRenderer();let material;const createShape = () => {const geometry = new THREE.CylinderGeometry( 70,100,200);material = new THREE.MeshStandardMaterial( { color:0x66ccff,metalness: 0.3,roughness: 0.5,wireframe:false} );const shape = new THREE.Mesh( geometry,material);return shape;
}onMounted(() => {initData()//添加相机空间const controls = new OrbitControls(camera, renderer.domElement);controls.enableDamping = true; // 开启阻尼controls.dampingFactor = 0.02; // 设置阻尼系数controls.autoRotate = true; // 开启自动旋转// 如果OrbitControls改变了相机参数,重新调用渲染器渲染三维场景controls.addEventListener('change', function () {renderer.render(scene, camera); //执行渲染操作});//监听鼠标、键盘事件renderer.setSize(width, height); //设置three.js渲染区域的尺寸(像素px)//将innerHTML置空,避免append重复添加渲染leftRef.value.innerHTML = ''leftRef.value.append(renderer.domElement);})
let mesh;
const initData = () => {createLight(scene,500,500,500);mesh = createShape();scene.add(mesh);render();
}
function render() {requestAnimationFrame(render);mesh.rotation.y += 0.01;renderer.render(scene, camera);
}
onUnmounted(() => {//释放内存renderer.dispose();
})</script>
<style scoped lang="less">
.pageBox {width: 100%;height: 100vh;padding: 0;margin: 0;position: fixed;top: 0;left: 0;display: flex;justify-content: space-between;align-items: center;.rightBox {width: 100%;height: 100%;}
}
</style>

三、总结

       很基础的形状很适合用来创造一些3D模型,根据一些元器件进行模型修改。

都看到这里了,记得【点赞】+【关注】哟。


http://www.hkcw.cn/article/hKJMvXCMDf.shtml

相关文章

VUE中created() 和 mounted()俩种生命周期钩子函数的区别

在 Vue.js 中&#xff0c;created() 和 mounted() 是两个关键的生命周期钩子函数&#xff0c;它们的主要区别在于​​调用时机​​和​​可访问的实例属性​​&#xff1a; 调用时机 ​​created()​​ 在 Vue 实例创建完成后立即调用&#xff08;​​数据初始化完成&#xff…

ASP.NET MVC添加模型示例

ASP.NET MVC高效构建Web应用ASP.NET MVC 我们总在谈“模型”&#xff0c;那到底什么是模型&#xff1f;简单说来&#xff0c;模型就是当我们使用软件去解决真实世界中各种实际问题的时候&#xff0c;对那些我们关心的实际事物的抽象和简化。比如&#xff0c;我们在软件系统中设…

【免费赠书8本】《扣子开发AI Agent智能体应用》

【图书介绍】《扣子开发AI Agent智能体应用》-CSDN博客 博主免费赠书《扣子开发AI Agent智能体应用》8本。 想要赠书的朋友&#xff0c;请在本文后面加评论&#xff0c;要求赠书。 收到赠书后&#xff0c;受赠书的朋友&#xff0c;两周内在CSDN博客上发一遍博文&#xff0c;…

stm32无刷电机控制_滑膜观测器更改电机如何调整?

这个教程是针对KY_Motor的无刷电机开发板&#xff0c;滑膜观测器反正切的补充教程&#xff0c;大家比较关注现有的程序如何适配到自己的电机上&#xff0c;因此我们团队推出了如下教程&#xff0c;让大家在学习的过程中有迹可循。 开发板链接&#xff1a;开发板 1. 电机电气参…

Vad-R1:通过从感知到认知的思维链进行视频异常推理

文章目录 速览摘要1 引言2 相关工作视频异常检测与数据集视频多模态大语言模型具备推理能力的多模态大语言模型 3 方法&#xff1a;Vad-R13.1 从感知到认知的思维链&#xff08;Perception-to-Cognition Chain-of-Thought&#xff09;3.2 数据集&#xff1a;Vad-Reasoning3.3 A…

【Doris基础】Doris中的Tablet详解:核心存储单元的设计与实现

目录 1 Tablet基础概念 1.1 什么是Tablet 1.2 Tablet的核心特性 1.3 Tablet与相关概念的关系 2 Tablet的架构设计 2.1 Tablet的整体架构 2.2 Tablet的存储结构 3 Tablet的生命周期管理 3.1 Tablet的创建流程 3.2 Tablet的数据写入流程 3.3 Tablet的压缩与合并 4 Ta…

因泰立科技:镭眸T51激光雷达,打造智能门控新生态

在高端门控行业&#xff0c;安全与效率是永恒的追求。如今&#xff0c;随着科技的飞速发展&#xff0c;激光雷达与TOF相机技术的融合&#xff0c;为门控系统带来了前所未有的智能感知能力&#xff0c;开启了精准守护的新时代。因泰立科技的镭眸T51激光雷达&#xff0c;作为这一…

Delphi读写Mifare Desfire Ev1 Ev2 EV3卡修改AES密钥源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b3bN1Vu&ftt&id917152255720 unit Unit2;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls,declaredl…

第T10周:数据增强

import matplotlib.pyplot as plt import numpy as np #隐藏警告 import warnings warnings.filterwarnings(ignore)from tensorflow.keras import layers import tensorflow as tf gpus tf.config.list_physical_devices("GPU")if gpus:tf.config.experimental.set…

Python_day40

昨天我们介绍了图像数据的格式以及模型定义的过程&#xff0c;发现和之前结构化数据的略有不同&#xff0c;主要差异体现在2处 1. 模型定义的时候需要展平图像 2. 由于数据过大&#xff0c;需要将数据集进行分批次处理&#xff0c;这往往涉及到了dataset和dataloader来规范代码…

MSTNet:用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法|文献速递-深度学习医疗AI最新文献

Title 题目 MSTNet: Multi-scale spatial-aware transformer with multi-instance learning for diabetic retinopathy classification MSTNet&#xff1a;用于糖尿病视网膜病变分类的多尺度空间感知 Transformer 与多实例学习方法 01 文献速递介绍 糖尿病视网膜病变&#…

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…

muduo库的初步认识和基本使用,创建一个简单查询单词服务系统

小编在学习完muduo库之后&#xff0c;觉得对于初学者&#xff0c;muduo库还是有点不好理解&#xff0c;所以在此&#xff0c;小编来告诉大家muduo库的初步认识和基本使用&#xff0c;让初学者也可以更快的上手和使用muduo库。 Muduo由陈硕大佬开发&#xff0c;是⼀个基于 非阻塞…

格恩朗超声波水表 助力农业精准灌溉与振兴​

在农业现代化的征程中&#xff0c;水资源的精准利用至关重要&#xff0c;而这离不开高精度计量设备的支持。大连格恩朗品牌积极响应国家全面推进乡村振兴、加快农业农村现代化的号召&#xff0c;精心打造的超声波水表&#xff0c;凭借其超高精度&#xff0c;成为绿色灌溉领域的…

Nginx进阶篇(静态资源的缓存处理、Nginx中与浏览器缓存相关的指令、Nginx的跨域问题、静态资源防盗链)

文章目录 1. 静态资源的缓存处理1.1 什么是缓存1.2 什么是Web缓存1.3 Web缓存的种类1.3.1 客户端缓存1.3.2 服务端缓存 1.4 为什么要用浏览器缓存1.5 浏览器缓存的执行流程1.6 浏览器强缓存和弱缓存的区别1.6.1 强缓存&#xff08;Strong Cache&#xff09;1.6.2 弱缓存&#x…

云游戏混合架构

云游戏混合架构通过整合本地计算资源与云端能力&#xff0c;形成了灵活且高性能的技术体系&#xff0c;其核心架构及技术特征可概括如下&#xff1a; 一、混合架构的典型模式 分层混合模式‌ 前端应用部署于公有云&#xff08;如渲染流化服务&#xff09;&#xff0c;后端逻辑…

Origin教程010:Origin绘制同心圆图

文章目录 10、绘制同心圆弧图1、同心圆弧图绘制2、调整绘图顺序3、设置标签内容、样式4、指引线设置5、添加图形标题6、练习数据10、绘制同心圆弧图 本节要点: 同心圆弧图的绘制调整绘图顺序(对象管理器)设置标签内容、样式指引线设置添加图形标题1、同心圆弧图绘制 1️⃣拖…

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯

rs485/232转profinet网关与长陆-UNI800称重显示控制仪通讯 在现代工业自动化系统中&#xff0c;RS485转Profinet网关作为一种关键的通信接口设备&#xff0c;其重要性不言而喻。它能够将传统的RS485接口设备接入先进的Profinet网络&#xff0c;实现不同协议之间的无缝转换和数…

【速通RAG实战:进阶】20、改进RAG检索质量有哪些诀窍?

一、数据层优化:构建高质量检索基础 (一)动态语义分块技术 传统固定长度分块易切断完整语义,采用基于相似度的动态分块策略可显著提升上下文连贯性。通过LangChain的SemanticChunker实现语义边界检测,当相邻文本相似度低于0.4时自动切分,避免将“设备型号-参数-操作步骤…

Nginx网站服务:从入门到LNMP架构实战

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年5月30日14点22分 前言 说起Web服务器&#xff0c…