Skip to content

Conversation

@spsDrop
Copy link

@spsDrop spsDrop commented Nov 21, 2025

This PR adds support for reading the up_axis, chirality, safe_orbit_camera_elevation_min_max_radians, and safe_orbit_camera_radius_min header values and applies them if the active camera is a ArcRotateCamera.

image

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s).
To prevent this PR from going to the changelog marked it with the "skip changelog" label.

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

@bjsplat
Copy link
Collaborator

bjsplat commented Nov 21, 2025

@spsDrop spsDrop marked this pull request as ready for review November 21, 2025 23:18
@spsDrop
Copy link
Author

spsDrop commented Nov 21, 2025

I can't seem to add a label to this PR now that it's created. But it's a new feature

safeOrbitCameraRadiusMin?: number;
safeOrbitCameraElevationMinMax?: [number, number];
upAxis?: "X" | "Y" | "Z";
chirality?: "LeftHanded" | "RightHanded";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chirality and upAxis read but not used?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a good question I saw we had these headers and wanted to add support for them but was not sure if you wanted that and if you already had handling for that I should wire up somewhere?

Copy link
Author

@spsDrop spsDrop Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reference this is how we are handling things in our plugin:

    if (chirality === AdobeGSplatChirality.RightHanded) {
      this.scaling.y *= -1.0;
    }

    switch (upAxis) {
      case AdobeGSplatUpAxis.X:
        this.rotation = new Vector3(0, 0, Math.PI / 2);
        break;
      case AdobeGSplatUpAxis.Y:
        this.rotation = new Vector3(0, 0, Math.PI);
        break;
      case AdobeGSplatUpAxis.Z:
        this.rotation = new Vector3(-Math.PI / 2, Math.PI, 0);
        break;
    }

Think this is fine to apply directly to the mesh or should we wrap the mesh or transform the data?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like making bakeCurrentTransformIntoVertices work on GaussianSplattingMesh. I'm a little unsure if applying the Chirality through scaling is standard enough practice to not cause issues.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An intermediate transform is added with imported GLTF. bakeCurrentTransformIntoVertices is not supported for the moment. I think this is something we will have to revisit with Gaussian Splatting GLTF extension.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants