当前位置: 首页 > news >正文

Threejs绘制圆锥体

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

 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'} ); //创建材质,颜色为白色#CCCCCCconst cone = new THREE.Mesh( geometry, material ); //通过geometry和材质创建网格模型this.scene.add( cone ); //将网格模型添加到场景中},

效果如下:

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

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

相关文章:

  • 【STM32开发环境搭建】-4-在STM32CubeMX中新增Keil(MDK-ARM) 5的工程目录(包含指定路径的C和H文件)
  • 通信工程学习:什么是OFDM正交频分复用
  • LLaMa-Factory入门教程
  • 【Lunix】常用命令
  • 2024重生之回溯数据结构与算法系列学习(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
  • Android常用C++特性之std::unique_lock
  • 【Android】BottomSheet基本用法总结(BottomSheetDialog,BottomSheetDialogFragment)
  • TRIZ理论在机器人性能优化中的应用
  • 曲线图异常波形检测系统源码分享
  • Linux基础(三):安装CentOS7(系统安装+桥接联网+换源)
  • linux服务器安装原生的php环境
  • 文心一言 VS 讯飞星火 VS chatgpt (357)-- 算法导论24.2 3题
  • 「Python入门」vscode的安装和python插件下载
  • 【车联网安全】车端网络攻击及检测的框架/模型
  • netty之Future和Promise
  • 【Amaple教程】5. 插件
  • 2018一半小结一波
  • IP路由与转发
  • Java 最常见的 200+ 面试题:面试必备
  • js正则,这点儿就够用了
  • JWT究竟是什么呢?
  • maven工程打包jar以及java jar命令的classpath使用
  • ReactNative开发常用的三方模块
  • React的组件模式
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring Cloud Feign的两种使用姿势
  • Vim 折腾记
  • 码农张的Bug人生 - 初来乍到
  • 浅谈web中前端模板引擎的使用
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 我是如何设计 Upload 上传组件的
  • 智能网联汽车信息安全
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • C# - 为值类型重定义相等性
  • Linux权限管理(week1_day5)--技术流ken
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #VERDI# 关于如何查看FSM状态机的方法
  • #传输# #传输数据判断#
  • #职场发展#其他
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (WSI分类)WSI分类文献小综述 2024
  • (十六)Flask之蓝图
  • (万字长文)Spring的核心知识尽揽其中
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (一)SvelteKit教程:hello world
  • (一一四)第九章编程练习
  • .aanva
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .net core 的缓存方案
  • .NET连接MongoDB数据库实例教程
  • ?php echo ?,?php echo Hello world!;?