Development Log
Follow our progress as we continue to expand the feature set of our online industrial simulation software.
November 27, 2024
Version 0.18
Improvements to dynamic joints for ProtoTwin Simulate and Connect.
Features
- Added dynamic path joint, supporting both open and closed curves.
- Added limits to prismatic, revolute, spherical and path joints.
- Added curve types: line, circle, arc, polyline and composite.
- Added feature selection for curves.
- Added automatic conversion of polylines to primitive curve types when using feature selection.
- Added path component and curve property editor for defining paths.
- Added the ability to resize the entity explorer.
Fixes
- Fixed a crash when deleting script source files which defined components that were being used.
- Fixed a potential crash on startup.
- Fixed a minor memory leak caused by joints not being released.
- Fixed an issue where deleting a script wouldn't also delete the cached version of the script if compilation was successful.
- Fixed an issue where the motor's position was being calculated incorrectly after changing the target velocity whilst using the velocity controller.
- Fixed an issue where binding a motor to a joint whilst the model was running could produce erratic behavior.
November 14, 2024
Version 0.17
Implementation of binding converters for ProtoTwin Connect.
Features
- Added binding converters, allowing mapping between server and model values/types.
- Added the ability to configure which columns should be displayed for the binding and signal tables.
- Added the ability to configure arrays of primitive types and handles through the inspector.
- Added object tree display to the console, allowing complex objects to be logged and including support for self-referencing.
- Added the ability to log warnings to the console programmatically.
- Added snippets for overriding the initialize and update functions.
- Added the ability to resize the inspector.
- Added detection of unsaved changes when leaving the application.
Fixes
- Fixed inability to add multiple built-in components of the same type to a single entity through the inspector.
- Fixed component handle properties not displaying the custom name assigned to the component in the inspector.
- Fixed objects sometimes sleeping on transport surfaces when the velocity of the motor was negative.
- Fixed script transpilation errors/warnings not being displayed to the console.
- Fixed a crash when saving scripts after the model has been initialized.
- Fixed some scripting errors not being displayed in the script editor.
- Fixed physics collision geometry sometimes being created for child entities with collider type set to "None".
- Fixed the view cube and performance monitor being displayed in the FBD editor.
Optimizations
- Improved view cube performance, reducing jitter.
- Improved mesh simplification when importing.
- Reduced performance overhead due to physics interaction.
October 27, 2024
Version 0.16
Implementation of additional protocols for ProtoTwin Connect.
Features
- Added support for the OPC UA protocol.
- Added support for the Mitsubishi MELSEC protocol (requires MX Component).
- Added rotary switch component.
Fixes
- Fixed adding tags for Schneider M221 PLCs.
- Fixed reading 32-bit integers for the Modbus TCP protocol.
October 10, 2024
Version 0.15
Implementation of additional protocols for ProtoTwin Connect.
Features
- Added support for the Beckhoff ADS protocol for connecting to Beckhoff IPCs and TwinCAT 3 running locally.
- Added support for the Omron FINS protocol for connecting to Omron PLCs.
- Added support for the Modbus TCP protocol for connecting to Schneider Modicon, Arduino and other PLCs.
Fixes
- Fixed reading/writing signed integer tags from/to PLCs.
- Fixed some occasional crashes when connecting to PLCs.
- Fixed reading/writing tags in Siemens Data Block (DB) numbers greater than 63.
Breaking Changes
- PLC tag encoding scheme changed to support address spaces larger than 65KB. Please contact us to recover older models.
September 27, 2024
Version 0.14
Ethernet/IP connectivity for ProtoTwin Connect.
Features
- Added support for the Ethernet/IP CIP Class 3 protocol.
- Added support for connecting to Allen-Bradley ControlLogix, CompactLogix. MicroLogix and Micro800 PLCs using Ethernet/IP.
- Added support for connecting to Omron NJ/NX PLCs using Ethernet/IP.
- Added the ability to search for Ethernet/IP devices on the local network.
- Added the ability to find all tags for an Ethernet/IP device.
- Added orthographic projection to lens component.
- Added view cube, allowing camera alignment with the principal axes and toggling camera projection.
- Added push button component, which can be toggled by clicking when in navigate mode.
- Added support for limiting the maximum number of vertices per convex-hull in the custom physics collider generator tool.
- Added blocked/cleared material properties to the sensor and distance sensor components.
- Added the ability to set the acceleration due to gravity globally through "world.settings.gravity".
- Added the ability to set the render scale in the graphics settings.
- Added the ability to set the rendering quality in the graphics settings.
- Added automatic determination of the contact offset for physics colliders from the bounding box dimensions.
- Improved support for rendering and simulating very small parts (down to about 100 microns).
- Simplified the user interface for the custom physics collider generator tool.
Fixes
- Fixed transport surfaces not working when the bound motor's velocity was very small.
- Fixed some gaps occurring between convex hulls when importing small custom physics meshes.
- Fixed grouping entities not creating the group at the position of the bounding box center.
- Fixed models failing to load when saved after deleting a script that is still referenced by another script.
Optimizations
- Improved PLC communications performance by not writing inputs that haven't changed.
- Reduced simulation thread spin-waiting when performing long-running actions, such as loading/saving models.
September 12, 2024
Version 0.13
Siemens PLC connectivity for ProtoTwin Connect.
Features
- Added support for connecting to Siemens S7 PLCs, including the S7-1500 and S7-1200 models.
- Added support for connecting to Siemens Logo PLCs.
- Added IO Browser for adding/importing PLC tags and binding tags to signals in the model.
- Added a "state" output to the distance sensor component.
- Added an "actuation controller" component for toggling motors between two target positions or velocities.
- Added low-latency mode, which is enabled automatically when running in VR or when connected to Python or PLCs.
- Added "I/O" tab to the IO Browser with quick generation of python variables for reinforcement learning.
Fixes
- Fixed a possible crash when many physics bodies are interacting with a transport surface.
- Fixed a possible crash after loading models.
- Fixed a possible crash when creating physics layers or loading models containing physics layers.
- Fixed a possible crash when creating custom graphics materials.
- Fixed non-determinism for physics bodies interacting with transport surfaces.
- Fixed textures referenced by custom materials being deleted when not in use.
- Fixed components not displaying in the inspector when using ProtoTwin Render.
Optimizations
- Significantly improved performance when running small models on hardware with many CPU cores/threads.
July 18, 2024
Version 0.12
Fixes and framework enhancements for ProtoTwin Simulate & Connect.
Features
- Added support for vectorized environments to ProtoTwin Connect.
- Added support for machine learning inference using ONNX Runtime Web to ProtoTwin Simulate.
- Added the ability to embed arbitrary files into models by dragging and dropping into the script editor file explorer.
- Added the ability to define async initialize and update functions for components.
- Added the ability to define post-update and asynchronous post-update functions for components.
- Added the ability for scripts to import NPM packages through URLs.
- Added entity property for obtaining the world axis-aligned bounding box of the entity and its descendants.
- Added automatic collider type determination when physics components are added through the inspector.
- Added linear and angular damping properties to physics component.
- Added position sensor, orientation sensor, linear velocity sensor and angular velocity sensor components.
- Added built-in recorder for capturing videos of simulations.
Fixes
- Fixed single-stepping running on the main thread rather than the simulation thread, which could occasionally cause large simulations to hang.
- Fixed attached sphere and box colliders sometimes not respecting scale.
- Fixed finding entities by name.
- Fixed the default environment map not being displayed correctly under settings.
- Fixed unparenting sometimes causing the list of children to become corrupted.
- Fixed the inertia tensor being determined incorrectly for small colliders.
- Fixed a crash in ProtoTwin Connect when writing a large number of signals from Python.
Optimizations
- Improved peformance when pasting entities.
Breaking Changes
- IO types must now explicitly call `assign()` to assign addresses to signals.
June 15, 2024
Version 0.11
Initial beta release for ProtoTwin Connect.
Features
- Added Python package for ProtoTwin Connect Client.
- Added Python package for base Gymnasium Environment.
- Added typed signals (BooleanSignal, Uint8Signal, Uint16Signal, Uint32Signal, Int8Signal, Int16Signal, Int32Signal, FloatSignal and DoubleSignal).
- Added I/O view for components, accessible through the component options dropdown.
- Added signal to the motor component for applied force/torque reporting.
- Added functions to the physics component for applying torques and forces to dynamic rigid bodies.
- Added support for spring-based physics interaction whilst in navigate mode.
Fixes
- Fixed motor components not receiving sensible defaults when created through the inspector.
- Fixed script editor displaying an error when creating handles to custom components imported from other script files.
- Fixed deserialization errors when loading models containing custom physics layers.
Optimizations
- Improved physics performance for large models.
- Improved dynamic motor performance.
Breaking Changes
- Signals are now strictly typed. Please contact us to recover older models.
May 10, 2024
Version 0.10
Fixes and framework enhancements for ProtoTwin Simulate & Connect.
Features
- Added ability to rename components.
- Added automatic placement when importing, ensuring that the bounding box is placed directly over the origin.
- Added better motor property defaults when created through a transport surface.
Fixes
- Fixed some FBD edges not being rendered as activated when connected to a single block output.
- Fixed RTRIG and FTRIG blocks not working correctly.
- Fixed select property options in the inspector sometimes not getting updated.
- Fixed console not displaying any errors that occur when loading.
- Fixed deserialization issue for handles to the base CreatorComponent type.
- Fixed creator components failing to remove some components on initialization.
- Fixed creator components failing to remove components from descendant entities on initialization.
May 6, 2024
Version 0.9
Introduction of FBD SoftPLC for controls testing in addition to fixes and enhancements for ProtoTwin Simulate.
Features
- Added support for Function Block Diagram (FBD) SoftPLC programming to the script editor.
- Added physics visualization view for debugging physics-related issues.
- Added accelerometer component.
- Added additional "Mesh" import recentering option for improved center-of-mass approximation.
- Added "Axis Locks" property to the physics component, allowing translation/rotation to be restricted in/about specified principal world axes.
- Added "Flags" decorator, supporting enum bit flag properties.
- Added "component.requireInitialization()", causing the referenced component to be immediately initialized.
Fixes
- Fixed the suction gripper component sometimes attempting to grip its own rigid body.
- Fixed a crash when changing the body type of a collider component to "Attached" if there is no rigid body on an ancestor entity.
- Fixed a crash when deleting an entity that was used as the base for a joint.
- Fixed the collision geometry for "Attached" bodies not updating when the entity was moved.
- Fixed box collision geometry not respecting graphics component scale for graphical meshes.
- Fixed box and sphere collision geometry including descendant entities that have their own collision geometry.
- Fixed entities with joints that were created by creator components sometimes jumping to incorrect positions.
- Fixed rigid bodies on movement surfaces failing to awake after the movement surface velocity is set to a non-zero value.
- Fixed the "Multiple" variant of the bounding box physics query sometimes reporting the same entity multiple times.
- Fixed potential non-determinism when using the built-in "Sequence" type.
- Fixed recentering failing when importing the same asset multiple times.
- Fixed the performance monitor sometimes failing to record data for every timestep.
Optimizations
- Improved frame consistency in VR for higher refresh rates.
Breaking changes
- Component signals have been moved to an "io" property on the "Component" type. Please contact us to recover older models.
March 18, 2024
Version 0.8
Fixes, optimizations and framework enhancements for ProtoTwin Simulate.
Features
- Added analytics for data collection and visualization with scripting API.
- Added support for Virtual Reality (VR) using WebXR.
- Added specular antialiasing to the PBR shader.
Fixes
- Fixed FPS display in the performance monitor sometimes failing to render correctly.
- Fixed grid shader line thickness not changing with distance.
- Fixed an issue where creating a custom material could recall properties from the previously created custom material.
Optimizations
- Improved frame consistency by reducing render spikes and frame skipping.
- Improved PBR shader performance.
March 4, 2024
Version 0.7
Fixes, optimizations and workflow improvements for ProtoTwin Simulate.
Features
- Added synchronization for elements imported from Onshape.
- Added support for importing models into other models.
- Added improved syntax and semantic highlighting to the integrated script editor.
- Added option to select the element (assembly / part studio) to import from Onshape.
Fixes
- Fixed creation of redundant "occurrence" entities when importing from Onshape.
- Fixed incorrect recentering when importing an asset multiple times.
- Fixed incorrect scale being applied when duplicating entities.
- Fixed transport surface motor property not getting cleared when the bound motor component is removed.
- Fixed custom physics not getting applied after changing the collider type from "None".
- Fixed textures for custom materials not getting applied.
- Fixed animation component causing flickering when repeating.
- Fixed "unsaved changes" dialog not being displayed when switching between scripts.
- Fixed built-in environment map textures getting embedded into saved models.
Optimizations
- Improved performance when opening and saving models.
- Reduced the file size of saved models.
- Improved application loading time by reducing asset file sizes.
- Improved rendering performance of the grid shader.
February 12, 2024
Version 0.6
Fixes and framework enhancements for ProtoTwin Simulate.
Features
- Added support for curved transport surfaces of constant radius.
- Added support for displaying/modifying signal properties in the inspector.
- Added support for changing the non-uniform scaling of graphics components via the transform gizmo.
- Added simulation speed selection to the control bar.
- Added loading progress bar when opening models.
- Added physics settings for constraint iterations and maximum depenetration velocity.
- Added graphics setting for changing the environment-based lighting brightness.
- Added API Documentation site for scripting.
Fixes
- Fixed motors failing to immediately respond when the target position or velocity is set every frame.
- Fixed highlighting entities when hovering over component dropdown options in the inspector.
- Fixed component initialization functions not getting called for components added by other components.
- Fixed a crash when cancelling after clicking to open a model.
- Fixed missing meshes after importing glTF assets.
- Fixed imported materials with the same base color but different opacities from being treated as the same material.
- Fixed transport surface normals being determined incorrectly, resulting in some edge catching.
- Fixed ambient lighting not getting applied to all entities.
- Fixed Onshape thumbnails for models belonging to enterprise accounts.
Breaking changes
- Sensors, distance sensors, creators and deleters no longer detect kinematic physics bodies by default.
January 31, 2024
Version 0.5
Fixes and framework enhancements for ProtoTwin Simulate.
Features
- Added support for physics collision layers.
- Added the ability to generate and switch between environment maps.
- Added import option for simplifying meshes.
- Added import option for recentering transform origins.
- Added setting for changing the physics solver.
- Added setting for changing the shadow quality.
- Added setting for changing ambient lighting.
- Added setting for controlling gamma correction.
- Added automatic determination of shadow orthographic projection size.
- Added graphics component property for configuring whether the entity casts shadows.
- Added logarithmic depth buffer, reducing z-fighting at distance.
- Added warning when switching away from the script editor with unsaved changes.
- Added utility function for waiting on multiple futures.
Fixes
- Fixed a crash when selecting mesh features on detailed meshes.
- Fixed a crash when reparenting entities with physics to the world.
- Fixed a crash when creating multiple scripted components with the same name.
- Fixed dynamic rigid bodies catching on the edges of transport surfaces.
Optimizations
- Reduced memory usage for models containing large numbers of entities.
- Improved performance when importing large glTF assets.
- Automatically optimize imported meshes for rendering performance.
Breaking changes
- Bindable type renamed to Signal.
December 22, 2023
Version 0.4
Initial beta release for ProtoTwin Simulate.
- Rework non-uniform scale as a graphics component property instead of a transform component property.
- Created custom physics collider software for generating a convex decomposition of meshes.
- Fixed bug causing non-determinism in the physics engine.
- Added instanced blinn-phong shader.
- Added physically-based grid shader.
- Added custom dropdown component to the inspector.
- Added entity creator and deleter components.
- Added volumetric and distance sensor components.
- Added servo motor component with control and stall properties.
- Added dynamic physics joints.
- Added mesh feature selection by selecting edges, curves and normals.
- Added physics materials with dynamic/static friction and restitution.
September 7, 2023
Version 0.3
Implementation of core features for ProtoTwin Simulate.
- Display dot indicating that there are unsaved changes to script components.
- Fixed normal map not being visible when importing GLB files.
- Added console to display logs from script components.
- Added window to display the current simulation time, speed, number of entities and bodies.
- Added handle type to allow components to reference other components and entities.
- Added documentation to the TypeScript API for classes, functions and properties.
- Added intelisense for types imported from other script components.
- Added auto-import for built-in and user-defined types in the script editor.
- Added copy-paste to entities for the hierarchy and transform gizmo.
August 22, 2023
Version 0.2
Bug fixes and improvements for ProtoTwin Render.
- Load textures from content delivery network.
- Fixed bug when loading environment maps.
- Added new import tab to support importing CAD from Onshape.
- Added main website.
August 12, 2023
Version 0.1
Initial beta release for ProtoTwin Render.
- Added navigation view which hides the explorer and inspector.
- Fixed custom and imported materials getting purged when they were not used.
- Added displacement maps for custom materials.
- Fixed inspector from flickering when live-update is enabled.
- Fixed inspector not being updated when adding or removing core components.
- Serialization and deserialization of custom materials.
- Allow naming entities and finding entities by name.
- Added animation component.
- Added performance monitor to display FPS, simulation/physics/scripting/render time, draw calls, triangles and memory consumption.
- Fixed resetting models and raycasts with meshes.
- Fixed shadows for transparent entities.
- Added transform gizmo for translating, rotating and scaling selected entities.
- Added model settings.
- Improved camera controller implementing smooth scrolling, panning and orbiting about non-origin points.