2016-03-26 17 views
9

Tôi gặp vấn đề lạ với việc hiển thị hình cầu xoay: hoạt ảnh dường như rung và tôi không biết vấn đề này xuất phát từ đâu.Three.js - vấn đề với hiển thị - hoạt ảnh đang lắc

Dưới đây là ví dụ về this link

và chức năng render:

function render() { 

    controls.update(); 
    requestAnimationFrame(render); 

    // For camera rotation : parametric parameter 
    timer = Date.now()*0.0001; 

    // Coordinates of camera 
    coordCamera.set(radiusCamera*Math.cos(timer), radiusCamera*Math.sin(timer), 0); 

    // Rotate camera function 
    rotateCamera(); 

    // Rendering 
    renderer.render(scene, camera); 

    } 

với rotateCameracomputeRotation chức năng:

function computeRotation (objectRotation, coordObject) { 

    // Apply rotation matrix 
    var rotationAll = new THREE.Matrix4(); 
    var rotationX = new THREE.Matrix4().makeRotationX(objectRotation.rotation.x); 
    var rotationY = new THREE.Matrix4().makeRotationY(objectRotation.rotation.y); 
    var rotationZ = new THREE.Matrix4().makeRotationZ(objectRotation.rotation.z); 
    rotationAll.multiplyMatrices(rotationX, rotationY); 
    rotationAll.multiply(rotationZ); 

    // Compute world coordinates 
    coordObject.applyMatrix4(rotationAll); 

    } 

    function rotateCamera() { 

    // Compute coordinates of camera 
    computeRotation(torus, coordCamera); 

    // Set camera position for motion 
    camera.position.set(coordCamera.x, coordCamera.y, coordCamera.z) 

    } 

Nếu ai đó có thể thấy có gì sai, điều này sẽ được tốt đẹp,

Nhờ sự giúp đỡ của bạn

UPDATE:

tôi đã cố gắng để chèn các giải pháp dưới đây của; Tôi đã không nhận được để làm cho công việc hoạt hình, không có gì được hiển thị: đây nỗ lực của tôi trên jsfiddle:

https://jsfiddle.net/ysis81/uau3nw2q/5/

Tôi cũng đã cố gắng với performance.now() nhưng hình ảnh động vẫn còn run rẩy; bạn có thể kiểm tra điều này trên https://jsfiddle.net/ysis81/2Lok5agy/3/

Tôi đã bắt đầu một tiền thưởng để giải quyết vấn đề này.

+0

Bạn có ý gì khi lắc? Bạn đã thử sử dụng vòng lặp trò chơi với thời gian cập nhật liên tục và hoạt ảnh nội suy chưa? –

+0

@ Michał Miszczyszyn Trong vòng quay, quả cầu đang mờ dần, như làm mới hoạt ảnh không liên tục hoặc bị giật ... bạn có nghĩa là bạn không thể tạo lại vấn đề trên máy tính của mình với các liên kết jsfiddle của tôi không? – youpilat13

+1

Hãy thử cách này: https://jsfiddle.net/3urtkpkv/. Bạn không nên hỏi 'TrackballControls' để điều khiển camera và sau đó tự mình kiểm soát máy ảnh. Giữ nó đơn giản. Thực ra, tôi sẽ chuyển sang 'OrbitControls'. Nó có thuộc tính 'autoRotate'. – WestLangley

Trả lời

5

requestAnimationFrame sẽ thực thi hàm trả về gọi lại của bạn với thông số dấu thời gian. Sử dụng tham số đó để tính số lượng mili giây đã trôi qua kể từ khung cuối cùng. Sau đó, sử dụng khác biệt như một số tỷ lệ phần trăm của luân chuyển.

var mySpecificLogic = function (millesecondsSinceLastFrame) { 
    // rotate your camera here 
    // if you want it to rotate 20 degrees every second 
    var rotPerSecond = 20; 
    var rotationPerMS = rotPerSecond/1000; 
    var rotationInDegrees = millesecondsSinceLastFrame * rotationPerMS; 
    // call your rotation function 
    // note: if you are also trying to move the ball with the mouse 
    // you'll want a hook to disable this basic rotation 

    // set the camera to whatever rotation you want 

    renderer.render(scene, camera); 
}; 


var startTheWholeThing = function() { 
    var lastFrameTime; 
    var deltaT; 

    function recurse(thisFrameTime) { 
     window.requestAnimationFrame(recurse); 
     lastFrameTime = lastFrameTime || thisFrameTime; 
     deltaT = thisFrameTime - lastFrameTime; 

     mySpecificLogic(deltaT); 

     lastFrameTime = thisFrameTime; 
    } 
    recurse(); 
}; 

startTheWholeThing(); 
+0

Cảm ơn nhưng tôi đã không đưa đoạn mã này vào trong tập lệnh của mình. Đây là nỗ lực của tôi để chèn nó vào mã của tôi trên liên kết này: https://jsfiddle.net/ysis81/uau3nw2q/4/. Nếu bạn có thể xem kịch bản của tôi, hãy xem – youpilat13

+0

Xoay vòng cố định có vẻ chính xác với tôi. Bạn đang nói về khi bạn cố gắng thao tác quả cầu bằng chuột? –

+0

Hình cầu không được hiển thị với phiên bản sau: https://jsfiddle.net/ysis81/uau3nw2q/4/, bạn có thể đề xuất phiên bản cố định của mình trên jsfiddle không? – youpilat13

Các vấn đề liên quan