javascript - 从球体对象的中心开始绘制线条和文本 [ThreeJS]
问题描述
我正在使用 ThreeJS 研究太阳系模型。当我点击一个行星名称时,相机会聚焦在那个行星上;我想从行星中心开始绘制一条(2D)线,将行星本身连接到一些文本(显示一些信息,如质量、速度等......)
我怎样才能做到这一点?
解决方案
通常,球体网格的中心可以通过它的位置属性简单地获得。标签的位置可以得到(例如通过使用球体的AABB)或通过预先定义。在这两种情况下,你最终都会得到至少两点,而不是你可以用来设置你的线,如下所示:
const points = [ spherePosition, labelPosition ]; // instances of Vector3
const geometry = new THREE.BufferGeometry().setFromPoints( points );
const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );
const line = new THREE.Line( geometry, material );
scene.add( line );
推荐阅读
- java - 根据输入将 WebClient 并行调用的批处理结果转换为 HashMap 条目,而不会阻塞每个单独的调用
- angular - 出现错误:''没有找到匹配的模板:'ca-sln'。”.Net Clean Architecture
- android - 使用 just_audio 和 audio_service 播放用户在 mediaItem 上停止的位置
- node.js - VS Code 集成终端在 Linux 上找不到 npm 命令
- typescript - Typescript 映射类型,其中仅保留可为空的属性并转换为字符串类型
- sql - 我需要什么 sql GP 用户原则来授予 CREATE 特权才能让我的触发器仍然工作?
- llvm - LLVM MachineCode,如何获取子虚拟寄存器(获取 64 位虚拟寄存器的低 32 位)?
- ruby - 运行 shopify-cli (ruby gem) 时未初始化的常量 Encoding::UTF_8 (NameError)
- php - 字符串中具有多个匹配项的正则表达式
- python - 如何让 python-isort 考虑我的 pypackage.toml 配置?