样条线与Three.js中的“挤出几何体”不匹配
spline not match ExtrudeGeometry in Three.js
我创建了一个闭合的样条曲线,并用矩形挤出几何体,为我的游戏创建一个轨迹。我使用样条曲线来计算我的船的位置,但当我检查时,样条曲线与几何图形不完全匹配。有什么问题吗?
用于挤出示例的形状
挤出几何体和样条曲线与不匹配
这是我的代码:
var genTrack = function (lanes, controlPoints, material, isClose) {
//extrude setting
var extrudeSettings = {
bevelEnabled: true,
bevelSegments: 2,
steps: 200,
material: 1,
extrudeMaterial: 1
};
//track shape
var trackShape = new THREE.Shape([
new THREE.Vector2(-config.laneHeight/2, config.laneWidth/2),
new THREE.Vector2(-config.laneHeight/2, - config.laneWidth/2),
new THREE.Vector2(config.laneHeight/2, - config.laneWidth/2),
new THREE.Vector2(config.laneHeight/2, config.laneWidth/2),
]);
//spline
if (isClose)
var spline = new THREE.ClosedSplineCurve3(controlPoints);
else
var spline = new THREE.SplineCurve3(controlPoints);
utils.public('spline', spline);
//set path
extrudeSettings.extrudePath = spline;
//frenet
var frenet = new THREE.TubeGeometry.FrenetFrames(spline, 200, false)
extrudeSettings.frames = frenet;
utils.public('extrudeSettings', extrudeSettings);
//create geometry
var geometry = new THREE.ExtrudeGeometry(trackShape, extrudeSettings);
var splineGeo = new THREE.TubeGeometry(spline, 200, 1, 4, true, false);
utils.public('frenet', frenet);
var angle = 0;
var track = new THREE.Object3D();
track.matrixAutoUpdate = false;
track.receiveShadow = true;
for (var i=0; i< lanes; i++){
var mesh = new THREE.Mesh(geometry, material);
mesh.position.set(i * (config.laneSpan + config.laneWidth), -30, 0);
//mesh.rotation.set(0, 0,angle);
//angle += Math.PI/180 * 20;
track.add(mesh);
}
track.scale.set(1.5, 1.5, 1.5);
var splineMesh = new THREE.Mesh(splineGeo, new THREE.MeshBasicMaterial({color: 0xffffff}));
return {
'geometry': geometry,
'mesh': track,
'spline': spline,
'frenet': frenet,
'splineMesh': splineMesh,
'controlPoints' : controlPoints
};
}
我相信你的问题出在这行:
mesh.position.set(i * (config.laneSpan + config.laneWidth), -30, 0);
我想你想要的更像是:
mesh.position.set(i * config.laneWidth / lanes, config.laneHeight / 2, 0);
我还没有测试过,但我想你需要这样的东西。
相关文章:
- 谷歌地图API-“;toGeoJson”;返回几何体为null的对象
- 如何将Three.js场景中的几何体导出为已修改的OBJ
- 我是否可以在渲染过程中使用三.js合并每一帧中的几何体
- 控制立方体或其他几何体的每个面,分为三.js
- 三个JS框几何体,渲染警告:渲染计数或素数为0
- 导入的JSON几何体不随骨骼移动
- Three.js(r75)-为什么是Three.几何体没有用于存储边的数组
- Three.js-如何反序列化几何体.toJSON()?(几何体.fromJSON在哪里?)
- three.js无法在three.Points几何体中渲染法线
- 合并后的几何体;t渲染更新
- 在Three.js中为几何体中的顶点指定颜色
- turf.js可以用来查找和修复坏的geojson几何体吗
- three.js为几何体中的每个顶点指定不同的颜色(渐变)
- 更新顶点几何体Threejs
- 在球体几何体上绘制网格线
- 如何将视频映射到三个.js几何体上
- 三.js - 在由管几何体构造的网格上移动纹理
- 如何在Three.js中挤出圆形几何体
- 样条线与Three.js中的“挤出几何体”不匹配
- 如何在three.js中使用挤出几何体创建的形状的每一侧应用不同的颜色