Releases: bitbybit-dev/bitbybit
Releases · bitbybit-dev/bitbybit
0.21.0
Announcing PlayCanvas Integration 🎉
We're excited to announce that PlayCanvas has joined the family of supported Bitbybit game engines! PlayCanvas is now officially supported alongside Three.js and Babylon.js, giving you more flexibility in choosing the right engine for your 3D CAD applications.
Learn more: Visit our PlayCanvas support blog post
New Features & Improvements
PlayCanvas Support
- Draw OCCT, Manifold, JSCAD shapes with faces and edges in PlayCanvas
- Orbit camera implementation for PlayCanvas
- Full integration with Bitbybit CAD shapes such as points, lines, polylines, curves as PlayCanvas entities
Rendering Enhancements
- Face direction visualization: When drawing OCCT, Manifold, and JSCAD shapes in all engines, faces are now rendered on the negative side by default with blue color for better visibility. This helps identify positive vs. negative face orientation, which is crucial for OpenCascade geometry construction. Can be disabled via the
drawTwoSidedproperty in drawing options. - Arrow rendering: Added arrow rendering option for polylines across all game engines, useful for visualizing edge and wire direction in OCCT.
- Multi-color support: Introduced multi-color rendering for polylines and points.
- Optimized point rendering: Point rendering is now significantly more efficient across all engines, utilizing thin instances technique.
- Verb surface rendering: Fixed rendering issues for Verb surfaces on all engines.
Materials & Textures
- Cross-engine materials: New generic API for creating textures and PBR materials that work consistently across all game engines. Materials created in Babylon.js visual programming editors can now be exported to PlayCanvas with matching appearance.
- Note: While parameters and colors are set identically, final rendering may vary slightly due to engine-specific rendering pipelines.
Gaussian Splatting (3DGS)
- Scale in place: Implemented
scaleInPlacemethod as the recommended approach for scaling Gaussian Splatting meshes. The old scale method flips geometry on the Y-axis and is now not considered best practice. Reference - Shadow support: Added
transparencyShadowproperty to directional and point lights. When enabled, 3DGS Gaussian Splat meshes now generate shadows.
Manifold Kernel
- Cross-sections: Added ability to create cross-sections from lists of points in the Manifold kernel.
Documentation
Comprehensive runner documentation is now available for all supported engines:
What's Changed
- v0.21.0 by @matas-bitbybit-dev in #108
- Documentation adjustments for PlayCanvas integration, additional exaples, fixes, stackblitz script updates by @matas-bitbybit-dev in #109
Full Changelog: v0.20.14...v0.21.0
0.20.14
New
bitbybit.csv - now you can create and parse CSV files
- parseToArray - Parses CSV text to a 2D array of strings (rows and columns).
- parseToJson - Parses CSV text to an array of JSON objects using headers.
- parseToJsonWithHeaders - Parses CSV text to JSON using custom headers (ignores CSV headers if present).
- queryColumn - Queries CSV data by column/header name and returns all values in that column.
- queryRowsByValue - Queries CSV data and filters rows where a column matches a value.
- arrayToCsv - Converts a 2D array to CSV text.
- jsonToCsv - Converts an array of JSON objects to CSV text.
- jsonToCsvAuto - Converts an array of JSON objects to CSV text using object keys as headers.
- getHeaders - the headers from a CSV file.
- getRowCount - Gets the number of rows in a CSV file (excluding headers if specified).
- getColumnCount - Gets the number of columns in a CSV file.
bitbybit.math
- roundAndRemoveTrailingZeros - Rounds a number to specified decimal places and removes trailing zeros.
- clamp - Constrains a value between a minimum and maximum value.
- lerp - Linear interpolation between two values using parameter t (0 to 1).
- inverseLerp - Calculates the interpolation parameter t for a value between start and end (reverse of lerp).
- smoothstep - Hermite interpolation with smooth acceleration and deceleration (smoother than linear lerp).
- sign - Returns the sign of a number: -1 for negative, 0 for zero, 1 for positive.
- fract - Returns the fractional part of a number (removes integer part, keeps decimals).
- wrap - Wraps a number within a specified range (creates repeating cycle).
- pingPong - Creates a ping-pong (back-and-forth) effect that bounces a value between 0 and length.
- moveTowards - Moves a value toward a target by a maximum delta amount (never overshooting).
bitbybit.list
- getFirstItem - Gets the first item from the list.
- getLastItem - Gets the last item from the list.
- shuffle - Randomly rearranges all items in the list (using Fisher-Yates algorithm).
- includes - Checks whether the list contains a specific item.
- findIndex - Finds the position (index) of the first occurrence of an item in the list.
- removeFirstItem - Removes the first item from the list.
- removeLastItem - Removes the last item from the list.
- removeItemAtIndexFromEnd - Removes an item counting from the end of the list (index 0 = last item, 1 = second-to-last, etc.).
- removeDuplicates - Removes duplicate items from the list using strict equality comparison (works with any type).
- concatenate - Combines multiple lists into a single list by joining them end-to-end.
- interleave - Combines multiple lists by alternating elements from each list (first from list1, first from list2, second from list1, etc.).
bitbybit.text
- A lot of new methods that expose basic string behaviour and regex functionality
Other Improvements
- added possibility to remove trailing zeros from occt dimension values
- new asset handling methods
Bug fixes
- Fixed a bug where wire would be split incorrectly by using collection of points. Described here: #80
Manifold kernel
- general update to manifold-3d v3.3.2
Learn Docs
- improved homepage of https://learn.bitbybit.dev
- Additional festive decorations tutorials
BabylonJS
- updated to v8.42.0
ThreeJS
- updated to v0.182.0
Unit Tests
- Many new unit tests that improve overall coverage were written.
- OCCT Coverage Report https://tests.bitbybit.dev/occt/
- Base Coverage Report https://tests.bitbybit.dev/base/
- ThreeJS Coverage Report https://tests.bitbybit.dev/threejs/
What's Changed
- v0.20.13 by @info-bitbybit-dev in #105
- v0.20.13 by @matas-bitbybit-dev in #106
- v0.20.14 by @info-bitbybit-dev in #107
Full Changelog: v0.20.12...v0.20.14
0.20.13
- shadow refresh rate option added to directional and point lights in babylonjs algorithms
- horizontal and vertical flips implemented for dimension labels in occt
- rotation angle implemented to pin with label occt dimension
- label override with expressions are now supported in occt dimensions
- update to babylonjs v8.39.2
What's Changed
- v0.20.12 by @matas-bitbybit-dev in #104
Full Changelog: v0.20.11...v0.20.13
0.20.12
- DXF R12 Support
- Arrowheads in dimensions
- Fixed some issues with solid primitives due to extrusion directions
- Base layer Global CDN Provider for cases where users must switch to different CDN during downtime. Or when they want to host required Bitbybit assets on their own infrastructure.
- A lot of new tutorials for 3D Bits app and Viewer Editor in the docs
What's Changed
- v0.20.12 by @matas-bitbybit-dev in #104
Full Changelog: v0.20.11...v0.20.12
0.20.11
What's Changed
- DXF arc bulge fixed by @matas-bitbybit-dev in #102
Full Changelog: v0.20.10...v0.20.11
0.20.10
- New beam profiles for occt wires, faces and solids.
- Updates to caching
- Babylonjs v8.34.0
What's Changed
- v0.20.10 by @matas-bitbybit-dev in #101
Full Changelog: v0.20.9...v0.20.10
0.20.9
What's Changed
- DXF Generator, updates to points of interest and dimensions by @info-bitbybit-dev in #100
Full Changelog: v0.20.8...v0.20.9
0.20.8
- Changed babylonjs scene method names for handling gradient backgrounds (they lacked word background, which made it hard to find them via search)
- Update to BabylonJS v8.33.2
- Use of shx for builds to work on windows
What's Changed
- Docs updated by @matas-bitbybit-dev in #92
- Docs updated with new tutorials by @matas-bitbybit-dev in #93
- win compatibility with rimraf by @matas-bitbybit-dev in #94
- adjust readme by @matas-bitbybit-dev in #95
- Update sine test by @mm-rnd in #97
- Replace rimraf with shx, update all rimraf/rm-rf & cp by @mm-rnd in #96
- Develop by @matas-bitbybit-dev in #98
- v0.20.8 by @matas-bitbybit-dev in #99
New Contributors
Full Changelog: v0.20.7...v0.20.8
0.20.7
- Gradient backgrounds for Babylonjs environments
- Image backgrounds for Babylonjs environments
- Learning docs updated
- BabylonJS update to v8.29.2
- ThreeJS update to v0.180.0
0.20.6
- Improved occt rotated extrusion algorithm to support shapes above/below ground
- Included new algorithm that allows to create BabylonJS skybox with texture URL
- Update to BabylonJS v8.26.2
- Updated to ThreeJS v0.180.0
- Fixed BufferGeometryUtils import to include .js extension
- Updates to docs
- Angular v20 example added for ThreeJS
- NodeJS app examples updated to support v20 and above by using "extensionless" npm lib - this was needed due to dropped support for --experimental-specifier-resolution=node