Animation 带文本对象的3JS FPS
我正在进行一个ThreeJS项目,其中有一个文本隧道,通过使用TextGeometry生成文本对象,并沿z轴连续移动它们来创建。对象是动态生成的。我每次使用30个循环缓冲区 出于某种原因,我得到了一个很好的FPS(大约60或更多),但变化很大。每隔5-10秒左右会有FPS下降。我已经在几种情况下测试了代码(即不使用其他元素,如其他对象、视频捕获、cam移动等),我非常确定移动的文本对象是FPS下降的原因 想法 ThreeJS更新功能:Animation 带文本对象的3JS FPS,animation,text,three.js,frame-rate,Animation,Text,Three.js,Frame Rate,我正在进行一个ThreeJS项目,其中有一个文本隧道,通过使用TextGeometry生成文本对象,并沿z轴连续移动它们来创建。对象是动态生成的。我每次使用30个循环缓冲区 出于某种原因,我得到了一个很好的FPS(大约60或更多),但变化很大。每隔5-10秒左右会有FPS下降。我已经在几种情况下测试了代码(即不使用其他元素,如其他对象、视频捕获、cam移动等),我非常确定移动的文本对象是FPS下降的原因 想法 ThreeJS更新功能: function update() { bookidx
function update()
{
bookidx = bookidx % book.length;
// FLOATING TEXT
if (stepsFloating++ % floatingWordsRate == 0 && makeFloatingWords){
addFloatingText(book[bookidx], scene);
}
else{
floatingWords.move();
}
// TUNNEL TEXT
// move sentences forward
for (t in tunnelWords.tokens){
tunnelWords.tokens[t][1].position.z += 120;
}
// get another sentence
if (tunnelWords.tokens[0][1].position.z > -2000){
addTunnelText(book[bookidx++], scene);
}
// KEYBOARD
keyboardUpdate();
// CONTROLS AND STATS
controls.update();
stats.update();
}
这将创建对象(我有意使用高倒角厚度作为效果,减小或根本不使用它并没有什么区别:
function makeTextMeshForTunnel(word){
var textGeom = new THREE.TextGeometry( word ,
{
size: 22, height: 1, curveSegments: 1,
font: "helvetiker", weight: "normal", style: "normal",
bevelThickness: 900, bevelSize: 2, bevelEnabled: true,
material: 1, extrudeMaterial: 0
});
// font: helvetiker, gentilis, droid sans, droid serif, optimer
// weight: normal, bold
var textMesh = new THREE.Mesh(textGeom, tunnel_textMaterial );
textGeom.computeBoundingBox();
var textWidth = textGeom.boundingBox.max.x - textGeom.boundingBox.min.x;
textMesh.position.set( -0.5 * textWidth, 0, -3000 );
textMesh.rotation.x = TUNNEL_TEXT_X_ROTATION;
return textMesh;
}
这有助于,似乎textGeometry比其他几何体更昂贵,这有助于了解问题的解决方案: