shmuelzon
Newbie
Israel
Joined: Dec 24, 2023
Post Count: 13
Status:
Offline
|
|
Re: Mapping Floor Plan Coordinates to Render/3DView Coordiantes
|
I finally got it to work, thanks Daniele!
For future reference, if anyone will stumble upon this post, here's what I ended up with:
int renderWidth = 1024; int renderHeight = 576;
/* Set up */ Camera camera = getHome().getCamera(); cameraPosition = new Vector4d(camera.getX(), camera.getZ(), camera.getY(), 0);
Transform3D yawRotation = new Transform3D(); yawRotation.rotY(camera.getYaw());
Transform3D pitchRotation = new Transform3D(); pitchRotation.rotX(-camera.getPitch());
Transform3D perspectiveTransform = new Transform3D(); perspectiveTransform.perspective(camera.getFieldOfView(), (double)renderWidth / renderHeight, 0.1, 100); perspectiveTransform.mul(pitchRotation); perspectiveTransform.mul(yawRotation);
HomePieceOfFurniture furniture = /* Get some furniture... */; Vector4d objectPosition = new Vector4d(furniture.getX(), furniture.getElevation(), furniture.getY(), 0);
objectPosition.sub(cameraPosition); perspectiveTransform.transform(objectPosition); objectPosition.scale(1 / objectPosition.w);
System.out.println(String.format("Projected pixel: (%d, %d)", (int)((objectPosition.x * 0.5 + 0.5) * renderWidth), (int)((objectPosition.y * 0.5 + 0.5) * renderHeight) ));
|
[Jan 15, 2024, 5:59:32 PM]
|
|
[Link]
|
|