2010-01-14 49 views
5

Tôi có một ModelVisual3D của một khối lập phương và tôi muốn tạo hiệu ứng động xoay quanh trục của nó cho 360 độ. Tôi làm cho một RoationTransform3D mà tôi nói để xoay 360 nhưng nó không xoay ở tất cả, cũng nếu bạn nói 270 độ nó quay chỉ 90 độ nhưng theo hướng ngược lại. Tôi đoán anh ta tính toán "con đường ngắn nhất" của vòng quay. Giải pháp tốt nhất tôi đã đưa ra là làm cho một hoạt ảnh quay 180 và sau khi nó kết thúc cuộc gọi 180 khác để hoàn thành vòng quay đầy đủ. Có cách nào để làm điều đó trong một hình ảnh động không?Xoay 360 độ đầy đủ trong WPF 3D

RotateTransform3D rotateTransform = new RotateTransform3D(); 
myCube.Model.Transform = rotateTransform; 

AxisAngleRotation3D rotateAxis = 
     new AxisAngleRotation3D(new Vector3D(0, 1, 0), 180/*or 360*/); 
Rotation3DAnimation rotateAnimation = 
     new Rotation3DAnimation(rotateAxis, TimeSpan.FromSeconds(2)); 

rotateTransform.BeginAnimation(RotateTransform3D.RotationProperty, 
     rotateAnimation); 

Trả lời

3

Hiểu biết của tôi là Rotation3DAnimation sử dụng nội suy tuyến tính cầu, do đó, nó sẽ luôn tìm đường đi ngắn nhất.

Một cách giải quyết khác là sử dụng Rotation3DAnimationUsingKeyFrames: thiết lập khung hình chính ở 120, 240 và 360 và bạn nên làm việc tốt.

Xin lỗi không có mã ngay bây giờ, tôi không có WPF trên máy tính này ...

-Jason

1

Tôi biết điều này đã được trả lời nhưng trong tìm kiếm của tôi cho một cách tốt hơn để làm tôi này tìm thấy phương án này:

Bạn có thể đặt giá trị xoay thành 180 (hoặc một nửa số bạn muốn xoay) và sau đó đặt hành vi lặp lại lặp lại hai lần và "IsCummulative" thành true.

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