作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想模拟盒子和矩形的透视变形。我的目标是扭曲盒子和图像,就好像相机正在倾斜和移动一样。但我并没有真正了解如何使用 PerspectiveCamera。
当我将 fixedEyeAtCameraZero
设置为 false
时,我可以在屏幕上看到框和图像。但是更改窗口大小会导致奇怪的正交透视变化,这是不现实的。
另一方面,当我将 fixedEyeAtCameraZero
设置为 true
时,我看到的只是一个空白窗口。
这是代码,第 51 行有违规标志。
package sample;
import javafx.application.Application;
import javafx.geometry.Point3D;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.shape.Box;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class Example_Box extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box2 = new Box();
//Setting the properties of the Box
box2.setWidth(100.0);
box2.setHeight(100.0);
box2.setDepth(100.0);
//Setting the position of the box
box2.setTranslateX(30); //450
box2.setTranslateY(90);//150
box2.setTranslateZ(300);
//Setting the drawing mode of the box
box2.setDrawMode(DrawMode.LINE);
//Drawing an Image
Image image = new Image("Lenna.png");
ImageView imageView = new ImageView(image);
imageView.setTranslateX(200);
imageView.setTranslateY(150);
imageView.setTranslateZ(200);
//imageView.getTransforms().add(new Rotate(30, 50, 30));
//Creating a Group object
Group root = new Group(box2, imageView);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting camera
PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setTranslateX(30);
camera.setTranslateY(0);
camera.setTranslateZ(-100);
camera.setRotationAxis(new Point3D(1,0,0));
scene.setCamera(camera);
//Setting title to the Stage
stage.setTitle("Drawing a Box");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
最佳答案
尝试更改 farClip 值。默认情况下,farClip 值在 FX 透视相机中为 100。
camera.setFarClip(2000.0);
通过添加上面的代码,我可以看到 Box。如果我将相机移得更远(在 Z 方向),我也可以看到图像,
camera.setTranslateZ(-1000);
引用:http://www.dummies.com/programming/java/javafx-add-a-perspective-camera/
关于JavaFx PerspectiveCamera - fixedEyeAtCameraZero 标志 - 当为真时,所有对象都会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167764/
我想模拟盒子和矩形的透视变形。我的目标是扭曲盒子和图像,就好像相机正在倾斜和移动一样。但我并没有真正了解如何使用 PerspectiveCamera。 当我将 fixedEyeAtCameraZero
我是一名优秀的程序员,十分优秀!