This commit is contained in:
mige 2025-08-08 15:39:54 +04:00
parent 87b08ea35e
commit 990aceed55
2 changed files with 24 additions and 8 deletions

View File

@ -30,10 +30,22 @@ class MyScene extends RenderNode {
shininess: 1 shininess: 1
}); });
window.test = () => {
parentEntity.setPitch(0);
cube2.setPitch(0);
cube3.setPitch(0);
parentEntity.setYaw(0);
cube2.setYaw(0);
cube3.setYaw(0);
this.renderer.activeCamera.set(new Vec3(10.5, 0, 0), new Vec3(0, 0, 0), new Vec3(0, 1, 0));
}
let parentEntity = new Entity({ let parentEntity = new Entity({
cartesian: new Vec3(0, 0, 0), cartesian: new Vec3(0, 0, 0),
independentPicking: true, independentPicking: true,
yaw: 45 * Math.PI / 180, //yaw: 45 * Math.PI / 180,
pitch: 45 * Math.PI / 180, pitch: 45 * Math.PI / 180,
geoObject: { geoObject: {
color: "rgb(90,90,90)", color: "rgb(90,90,90)",
@ -47,7 +59,7 @@ class MyScene extends RenderNode {
let cube2 = new Entity({ let cube2 = new Entity({
cartesian: new Vec3(5, 0, 5), cartesian: new Vec3(5, 0, 5),
independentPicking: true, independentPicking: true,
yaw: 45 * Math.PI / 180, //yaw: 45 * Math.PI / 180,
pitch: 45 * Math.PI / 180, pitch: 45 * Math.PI / 180,
geoObject: { geoObject: {
color: "rgb(90,90,90)", color: "rgb(90,90,90)",
@ -59,9 +71,9 @@ class MyScene extends RenderNode {
}); });
let cube3 = new Entity({ let cube3 = new Entity({
cartesian: new Vec3(-1, 5, 1), cartesian: new Vec3(-1, 3, 1),
independentPicking: true, independentPicking: true,
yaw: 45 * Math.PI / 180, //yaw: 45 * Math.PI / 180,
pitch: 45 * Math.PI / 180, pitch: 45 * Math.PI / 180,
geoObject: { geoObject: {
color: "rgb(90,90,90)", color: "rgb(90,90,90)",
@ -78,7 +90,7 @@ class MyScene extends RenderNode {
collection.addTo(this); collection.addTo(this);
this.renderer.activeCamera.set(new Vec3(-10, 10, 10), new Vec3(0, 0, 0)); this.renderer.activeCamera.set(new Vec3(0, 10, 10), new Vec3(0, 0, 0));
this.renderer.activeCamera.isOrthographic = true; this.renderer.activeCamera.isOrthographic = true;
this.renderer.activeCamera.update(); this.renderer.activeCamera.update();

View File

@ -1345,10 +1345,14 @@ class Renderer {
let screenPos = new Vec4(nx * 2.0 - 1.0, ny * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0); let screenPos = new Vec4(nx * 2.0 - 1.0, ny * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);
let viewPosition = frustum.inverseProjectionMatrix.mulVec4(screenPos); let viewPosition = frustum.inverseProjectionMatrix.mulVec4(screenPos);
let dir = (px as IBaseInputState).direction || camera.unproject(px.x, px.y); let zView = -viewPosition.z / viewPosition.w;
dist = -(viewPosition.z / viewPosition.w) / dir.dot(camera.getForward());
return dist; if (camera.isOrthographic) {
return zView;
}
let dir = (px as IBaseInputState).direction || camera.unproject(px.x, px.y);
return zView / dir.dot(camera.getForward());
} }
/** /**