Threejs绘制圆锥体

news2024/11/23 23:43:48

    上一章节实现了胶囊体的绘制,这节来绘制圆锥体,圆锥体就是三角形旋转获得的,如上文一样,先要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下:

 initScene() {
      this.scene = new THREE.Scene();//创建一个Scene场景
    },
    initLight(){
      const light = new THREE.DirectionalLight(0xffffff, 1);//创建一个灯光
      this.scene.add(light)
    },
    initCamera(){
      //创建一个透视相机,视角为45度,宽高比为window窗口的宽高比,0.1为近面,10000为远面
      this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000);
      this.camera.position.set(50,50,50);//设置相机位置
      this.camera.lookAt(0,0,0);//设置相机位置
    },
 initRenderer(){//初始化渲染器
      this.renderer = new THREE.WebGLRenderer({ antialias: true });
      this.container = document.getElementById("container");//获取容器
      this.renderer.setSize(this.container.clientWidth, this.container.clientHeight);//设置渲染器的大小
      this.container.appendChild(this.renderer.domElement);//将渲染器添加到容器中
      this.renderer.setClearColor('#FFFFFF', 1.0);//设置背景颜色
    },
    initOrbitControls(){ //创建鼠标控制工具
      this.orbitControls = new OrbitControls(this.camera, this.renderer.domElement);//创建控制器
    },
    initAnimate() { //循环渲染
      requestAnimationFrame(this.initAnimate);
      this.renderer.render(this.scene, this.camera);
    },

ConeGeometry(圆锥几何体)用于创建圆锥形状的三维几何体。

ConeGeometry(radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength)

  • radius:圆锥底面半径,决定圆锥底部的大小。默认值为 1。
  • height:圆锥的高度,从底面到顶点的距离。默认值为 1。
  • radialSegments:圆锥侧面圆周方向的分段数,决定圆锥侧面的平滑程度。默认值为 8。
  • heightSegments:圆锥高度方向的分段数,影响圆锥在高度上的平滑度。默认值为 1。
  • openEnded:一个布尔值,决定圆锥的底面是否开放。如果为true,则圆锥底面没有面,只有侧面;如果为false,则圆锥是封闭的,既有侧面也有底面。默认值为false
  • thetaStart:圆锥侧面起始角度,以弧度表示。默认值为 0。
  • thetaLength:圆锥侧面的角度范围,以弧度表示。默认值为 2π,即完整的圆周。、

代码如下:

 //创建圆锥体
initConeGeometry(){ 
      const geometry = new THREE.ConeGeometry(1, 2, 32);
      const material = new THREE.MeshBasicMaterial( {color: '#CCCCCC'} ); //创建材质,颜色为白色#CCCCCC
      const cone = new THREE.Mesh( geometry, material ); //通过geometry和材质创建网格模型
      this.scene.add( cone ); //将网格模型添加到场景中
    },

效果如下:

 但是因为颜色会纯色,看不出立体效果,我们将材质修改为只显示框架,只需要将材质修改为:

      const material = new THREE.MeshBasicMaterial( {color: '#CCCCCC',wireframe:true} ); //创建材质,颜色为白色#CCCCCC

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

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

相关文章

电力系统中有哪些好的运维的平台?

摘要:介绍台商大厦,采用综合保护装置、多功能仪表、变压器温控仪、直流屏、烟雾传感器、门磁开关、网络摄像头等设备,采集配电现场的各种电参量和状态信号。系统采用现场就地组网的方式,组网后通过现场网关远传至阿里云平台&#…

【模板进阶】std::enable_if

一、 SFINAE 在介绍 s t d : : e n a b l e _ i f std::enable\_if std::enable_if之前,先介绍一个概念: S F I N A E SFINAE SFINAE,全称是: S u b s t i t u t i o n F a i l u r e i s n o t a n E r r o r Substitution\ Fai…

【java21】java21新特性之JavaDoc中支持代码片段

在Java18之前,已经支持在JavaDoc中引入代码片段,这样可以在某些场景下更好的展示描述信息,但是之前的支持功能有限,比如我想高亮代码片段中的某一段代码是无能为力的。现在Java18优化了这个问题,增加了snippet来引入更…

短视频矩阵管理系统贴牌 源码开发

抖音账号矩阵的开发核心维度包括: 多账号管理开发维度:通过运用不同类型的账号矩阵,可以实现统一且便捷的管理。目前,矩阵系统支持管理抖音、快手、视频号,b站的账号,未来计划加入小红书,tk等等的账号管理。 矩阵账号…

如何编写高质量的用户故事

本文详细介绍了如何在敏捷开发过程中编写高质量用户故事(User Story),包括用户故事的定义、结构、撰写技巧以及如何与产品待办列表(Product Backlog)中的其他工作项(PBI)相结合,以提…

【Elasticsearch系列廿二】特殊参数

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

解释器模式原理剖析和Spring中的应用

解释器模式原理剖析和Spring中的应用 解释器模式 是一种行为型设计模式,它定义了一种语言的文法表示,并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建语法解释器,例如计算器、简单编程语言的解释器等。 核心思想&#xff1a…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中(如家庭或小型办公室宽带),远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题,结合神卓互联NAS公网助手提供的DDNS(动态域名服务)功能,我们可以轻松实现通过…

蓝牙、WiFi、2.4G、Zigbee、LoRa、NB-IoT的区别与应用场景

在现代科技的推动下,无线通信技术已经成为我们生活中不可或缺的一部分。从智能家居到工业自动化,从远程监控到环境传感,每一种技术都有其独特的优势和应用场景。今天,我们将深入探讨六种主流的无线通信技术——蓝牙、WiFi、2.4G、…

基于vue框架的大参林药品信息管理系统的设计与实现8b4gt(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,药品分类,药品信息,医生 开题报告内容 基于Vue框架的大参林药品信息管理系统的设计与实现开题报告 一、引言 随着医疗健康行业的快速发展和信息化浪潮的推进,药品信息管理已成为提升医疗服务效率、保障患者用药安全、…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲!开干 这篇文章将分为九个篇章,带你逐步掌握工作流的核心知识。“破气式”,代表着工作流中的 无形之力,它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了,我相信到这里之后各位都已经出神入化…

状态模式原理剖析

《状态模式原理剖析》 状态模式(State Pattern) 是一种行为设计模式,它允许对象在其内部状态改变时改变其行为。换句话说,当对象状态发生变化时,它的行为也会随之变化。 核心思想: 状态模式将对象的不同状…

爬虫逆向学习(七):补环境动态生成某数四代后缀MmEwMD

声明:本篇文章内容是整理并分享在学习网上各位大佬的优秀知识后的实战与踩坑记录 前言 这篇文章主要是研究如何动态生成后缀参数MmEwMD的,它是在文章爬虫逆向学习(六):补环境过某数四代的基础上进行研究的,代码也是在它基础上增…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

场景介绍 实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型,分别是&#xff1a…

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦!正点原子工程师手把手教你学!彻底解决ARM32单片机项目入门难的问题! 一、课程介绍 本课程专为ARM32单片机的入门学习者设计,涵盖了环境搭建、编程软件使用、模块基础驱动和多…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好,这里是效率办公指南! 📚 在线性代数中,逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵,意味着该矩阵是可逆的,或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github:https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码,并保持其余代…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重(按列顺序)unionByName 并集不去重(按列名…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中,提高工作效率成为了每个人追求的目标。而在这个数字化时代,选择对的软件工具无疑是提高效率的关键。今天,我为大家推荐五款优秀的工作效率软件,帮助你在工作中事半功倍。 1、亿可达…