Skip to content

Commit

Permalink
Merge pull request #11742 from srtrotter/ellipsoid-inner-radius-bug-fix
Browse files Browse the repository at this point in the history
Ellipsoid inner radius bug fix
  • Loading branch information
ggetz committed Jan 8, 2024
2 parents 92463d0 + 177c2e2 commit efdc0d9
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- Fixed a bug where the `Cesium3DTileset` constructor was ignoring the options `dynamicScreenSpaceError`, `dynamicScreenSpaceErrorDensity`, `dynamicScreenSpaceErrorFactor` and `dynamicScreenSpaceErrorHeightFalloff`. [#11677](https://github.com/CesiumGS/cesium/issues/11677)
- Fix globe materials when lighting is false. Slope/Aspect material no longer rely on turning on lighting or shadows. [#11563](https://github.com/CesiumGS/cesium/issues/11563)
- Fixed a bug where `GregorianDate` constructor would not validate the input parameters for valid date. [#10075](https://github.com/CesiumGS/cesium/pull/10075)
- Fixed improper scaling of ellipsoid inner radii in 3D mode. [#11656](https://github.com/CesiumGS/cesium/issues/11656 and [#10245](https://github.com/CesiumGS/cesium/issues/10245)

#### @cesium/widgets

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -547,11 +547,10 @@ DynamicEllipsoidGeometryUpdater.prototype.update = function (time) {
options.radii = Cartesian3.clone(in3D ? unitSphere : radii, options.radii);
if (defined(innerRadii)) {
if (in3D) {
const mag = Cartesian3.magnitude(radii);
options.innerRadii = Cartesian3.fromElements(
innerRadii.x / mag,
innerRadii.y / mag,
innerRadii.z / mag,
innerRadii.x / radii.x,
innerRadii.y / radii.y,
innerRadii.z / radii.z,
options.innerRadii
);
} else {
Expand Down
27 changes: 27 additions & 0 deletions packages/engine/Specs/DataSources/EllipsoidGeometryUpdaterSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,33 @@ describe(
);
});

it("Inner radii should be scaled when in 3D mode", function () {
const ellipsoid = new EllipsoidGraphics();
ellipsoid.radii = createDynamicProperty(new Cartesian3(1, 2, 3));
ellipsoid.innerRadii = createDynamicProperty(new Cartesian3(0.5, 1, 1.5));

const entity = new Entity();
entity.position = createDynamicProperty(Cartesian3.fromDegrees(0, 0, 0));
entity.orientation = createDynamicProperty(Quaternion.IDENTITY);
entity.ellipsoid = ellipsoid;

const updater = new EllipsoidGeometryUpdater(entity, scene);
const primitives = scene.primitives;

const dynamicUpdater = updater.createDynamicUpdater(
primitives,
new PrimitiveCollection()
);
dynamicUpdater.update(time);

scene.initializeFrame();
scene.render();

expect(dynamicUpdater._options.innerRadii.x).toEqual(0.5);
expect(dynamicUpdater._options.innerRadii.y).toEqual(0.5);
expect(dynamicUpdater._options.innerRadii.z).toEqual(0.5);
});

it("dynamic ellipsoid fast path updates attributes", function () {
const ellipsoid = new EllipsoidGraphics();
ellipsoid.show = createDynamicProperty(true);
Expand Down

0 comments on commit efdc0d9

Please sign in to comment.