Print at Dec 16, 2025, 12:56:58 PM

Posted by shmuelzon at Jan 15, 2024, 5:59:32 PM
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)
));