1.9.0 Change Notes
Upgrade to Electron 6.1.5
- iModel.js has moved up to Electron version 6.1.5 from the previous version of 4.1.0.
Added Tween library
- iModel.js now incorporates (a copy of) the tweening library from tween.js.
High-DPI display support
The renderer now takes into account the device pixel ratio ("DPI") of the display by adjusting Viewport resolution to match screen resolution, including any scaling applied by the operating system or browser. This corrects issues like blurriness on high-DPI retina displays. This behavior is enabled by default; to disable it, set RenderSystem.Options.dpiAwareViewports to false when initializing the IModelApp.
All APIs continue to specify pixel-valued inputs as CSS pixels. However, APIs that read and return pixel values now do so in device pixels. The following new APIs can help when dealing with this discrepancy:
queryDevicePixelRatioto obtain the device pixel ratio; andcssPixelsToDevicePixelsto convert from CSS pixels to device pixels.
The primary affected API is Viewport.readPixels. Below is an example of how to correctly account for DPI scale when using that function:
Geometry
Ellipsoid and EllipsoidPatch classes
- Range, ray intersection, and project-point-to-surface for Ellipsoid with patch limits
LongitudeLatitudeNumberclass to carry position and altitude
Miscellaneous
AngleSweepclass options for considering period shifts, added as optional args in- static
AngleSweep.isRadiansInStartEnd(radians: number, radians0: number, radians1: number, allowPeriodShift?: boolean): boolean; - instance method
mySweep.isRadiansInSweepoptional arg for periodic shift.
- static
Angleinstance propertyisNorthOrSouthPole- static
NumberArray.createArrayWithMaxStepSize(low: number, high: number, step: number): number[];- new method, returns array of numbers with (max) step size between low and high
Plane3dByOriginAndVectorsinstance methods for extracting normalized directions- instance method
myPlane.normalizeInPlace (): booleanto normalize the vectors. - instance method
myPlane.toRigidFrameto extract local normalized frame - instance method
myPlane.unitNormalto extract unit normal - instance method
myPlane.unitNormalRayto extract perpendicular ray - apply
Vector3dinstance methodnormalizeInPlace()to bothvectorUandvectorVof the plane
- instance method
Range3dclass methods- instance method
myRange.extendSingleAxis(a: number, axisIndex: AxisIndex): void;- branch to one of
extendXOnly,extendYOnly,extendZOnly
- branch to one of
- instance method
Ray3dclass methods- instance method
myRay.cloneInverseTransformed(transform: Transform): Ray3d | undefined;- multiply by inverse of a transform and return the modified ray
- instance method
Transformclass methods- static `createRigidFromOriginAndColumns(origin: XYZ | undefined, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): Transform | undefined;
- Careful logic to avoid object allocation when reusing result.
- static `createRigidFromOriginAndColumns(origin: XYZ | undefined, vectorX: Vector3d, vectorY: Vector3d, axisOrder: AxisOrder, result?: Transform): Transform | undefined;
Last Updated: 11 June, 2025