如何使用three.js链接两个几何对象
How to chain two geometric objects using three.js
我们如何使用一条线连接两个规范?我希望它能像用绳子或弹性物体连接的球一样有人能指出一些样品吗?
在两点之间绘制箭头很简单:
var startPoint = new THREE.Vector3(10,20,30);
var endPoint = new THREE.Vector3(70,80,90);
var direction = new THREE.Vector3().subVectors(endPoint, startPoint).normalize();
var arrow = new THREE.ArrowHelper(direction, startPoint, startPoint.distanceTo(endPoint), 0xCC0000 );
scene.add(arrow);
只画一条线有点棘手:
var lineGeometry = new THREE.Geometry();
lineGeometry.vertices.push( new THREE.Vector3(10,20,30), new THREE.Vector3(70,80,90) );
lineGeometry.computeLineDistances();
var lineMaterial = new THREE.LineBasicMaterial( { color: 0xCC0000 } );
var line = new THREE.Line( lineGeometry, lineMaterial );
scene.add(line);
我所指的需要一个物理引擎。
示例可在此处找到http://schteppe.github.io/cannon.js/
如果您想为两个对象之间的线提供"弹性感觉",可以使用BezierCurve
。CCD_ 2中包含了几种不同的类型。例如,请查看此链接以获取更多信息。
我不太明白你在自己的答案中关于物理引擎的意思,但如果你打算制作一条水平的绳索状线,你最好使用几个连接的THREE.Line
并激活一个物理引擎,比如cannon.js
。我认为您最好使用THREXCannon.js,以便在两者之间轻松集成。
BufferGeometry
的红色直线示例
Threejsr125更新后,请参阅的详细信息
let geometry = new THREE.BufferGeometry().setFromPoints([
new THREE.Vector3(-5, 5, 0),
new THREE.Vector3(5, 5, 0)
])
let line = new THREE.Line(geometry, new THREE.LineBasicMaterial({ color: 0xff0000 }))
scene.add(line)
相关文章:
- Backbone relational无法实例化两个RelationalModel对象
- 删除两个独立对象中的属性,而不使用多余的删除语句
- 如何使用jQuery合并两个json对象
- 如何使用 Backbone 读取通过同一 REST URL 返回的两个不同对象
- 查找与通过两次调用地理编码创建的两个 latlng 对象的距离
- 比较两个不同对象的值
- 如何将两个json对象合并为一个json
- 比较D3.js中的两个时间对象
- 通过比较另外两个json对象来创建json对象
- 在不使用jQuery的情况下连接两个JSON对象
- 如何获得两个JS对象的差异
- 如何检查两个 Map 对象是否相等
- Angularjs - 组合两个 json 对象
- 两个 JavaScript 对象具有相同的属性实现方式,但原型不同
- JavaScript 中通过公共属性“交叉”两个 JSON 对象数组的最佳方式
- 比较来自输入 AngularJS 的两个 JSON 对象
- 两个时间对象之间的差异
- 如何将两个 JavaScript 对象与 JavaScript 连接起来
- QUnit - 如何比较两个复杂对象
- jQuery函数,用于计算两个JavaScript对象之间的差异