Early Access 16
September 5, 2023
Overview of changes in this release:
- Users can now use their voice to specify text. The editor panel for text type parameters now has a microphone button. Press and hold the button while speaking. When the button is released the audio is automatically dictated into text and entered into the field.
- The Home Table's search function now uses a text field similar to that of the editor panel for editing text type values. This makes it easier to edit and manipulate the text and allows using the new dictation feature.
- The Thing definition table and attribution setting function now also use the same text editing mechanism. In this case there are two text fields (e.g., to specify the Thing name and description), which share one set of buttons for cut/copy/paste/dictate.
- New clone option for snap points. The snap point tool now has a clone mode that allows cloning a snap point from one object to another. This allows, for example, to use a construction plane to position a snap point and then transfer the snap point from the construction plane to another object.
- New scene description gizmo. This gizmo has text sockets to specify the scene name and description. There is also a button to capture a snapshot image, either from the user's current point of view or a scene camera. Using this gizmo to setup the scene description avoids removing the headset and using the app's desktop UI.
Early Access 15
July 11th, 2023
Overview of changes in this release:
- New intro video in the Scene Lobby. Press the play button to play the video on the big screen in the Scene Lobby.
Early Access 14
June 28th, 2023
Overview of changes in this release:
- Fixed a bug where sometimes objects would disappear after ungrouping.
- Fixed a bug that sometimes caused some of the sample scenes to be empty for a new installation.
- New tooltips for "app menu" button to help users find that functionality. The app menu on the Utility tool (left hand) places the Home Table and on the right hand it brings up the tool selector.
- In the Scene Lobby, now just pointing at a scene bubble brings up the tooltip informing users how to enter a scene.
Early Access 13
June 13th, 2023
Overview of changes in this release:
- Improvements to Arm Joints in non-dynamic mode (targeting a particular joint value) so they better handle different loads.
- Fixed a bug where locked objects weren't showing up in camera views.
- Fixed a bug that sometimes caused incorrect mass properties for Arm Joints and could cause the application to suddenly exit.
- Fixed a bug where loading a shared scene didn't place the user at the scene's spawn point (if it had one).
- Fixed a bug where the regroup function of the Group Tool was not breaking apart object subgroups.
- Fixed a bug with teleporting in play mode that sometimes caused the player's hands to be left in the old location and caused the arms to be stretched.
- Fixed a bug where the top part of the teleport gizmo was visible in play mode.
- Improvements to the way play mode applies forces when gripping an Arm Joint to better handle cases where the Arm Joint has friction.
- Fixed an issue with Arm Joints (especially for long chains) where the scale for the object at the tip of the chain would grow slightly each time the scene was loaded (and could become noticably large over time).
Early Access 12
May 31st, 2023
Overview of changes in this release:
- Networking / Multi-user
- Support for hosting and joining multi-user network sessions for cooperative scene building.
- Any user can host a session and get a simple 4-digit server code to share with friends.
- Other users can enter the code to join the session as a client. Each user is assigned a random color when they enter the session.
- Voice chat is supported for network sessions.
- The physics simulation is run independently for each user, however dynamic objects are synced to the host's state when they sleep.
- New joint system: Arm Joints
- Arm joints are ideal for chains of joints comprised of hinges or sliding joints.
- Arm joints can be hierarchies, but loops are not supported.
- New arm joint tool to create and modify joint chains. Arm joints can be re-linked to other joint chains.
- Pose mode disables joints and allows positioning them to define the rest pose.
- Arm joint specific snap assists with joint layout.
- Arm joints can be dynamic or target specific joint values. A motor mode allows moving joints at a specific speed.
- Arm joints support friction (and tension in motor mode)
- Physics
- Physics tool now indicates when a group of objects have mixed mass settings. Objects can be set to different mass densities and grouped.
- New system to calculate inertia, mass, and center of mass supports rigid bodies with mixed densities.
- Improvements to the Physics tool's touch finger to make it work better with objects of different mass and scale.
- Minor improvement to the way friction is handled.
- Reverted the solver back to Projected Gauss-Seidel (PGS) instead of Temporal Gauss-Seidel (TGS). TGS is better in many cases, but is also rigid in a way that can be unstable. The new arm joint system provides tighter joints and so TGS is less necessary.
- New Object locking system
- Visibility tool now has modes to lock and unlock objects.
- A locked object is visible, but can not be selected with tools and generally is not modifiable.
- Locked objects still interact with the physics simulation and animation.
- A group can contain both locked and unlocked objects. The group can only be gripped via unlocked objects and any locked objects in the group will move with it.
- The visibility tool shows the number of locked and hidden objects in its tool tip when resting a finger on one of the touchpad buttons.
- Both locking and visibility are now saved in the scene file.
- Wire socket workflow improvements
- Nearby sockets are now see-through behind geometry making them easier to select.
- Sockets are also given selection priority
- Fixed an issue where super snap points weren't visible when placed inside objects.
- Fixed a bug that sometimes prevented snapping a path joint back on its path.
- Fixed a bug that prevented breaking apart ball joints when connected to a lookat joint.
Early Access 11
January 20th, 2022
Overview of changes in this release:
- Updated the version of Unity we are using the build Thingamajig. Previously we were using 2019.4 LTS, but we have now switched to 2020.3 LTS.
- For physics, switched from the Projected Gauss-Seidel (PGS) solver to the Temporal Gauss-Seidel (TGS) solver. This should improve the stability and quality for joints in particular.
- Slight change to how Thing definition works. Previously a new Thing definition would use the coordinate system of one of the selected objects to define the orientation of the resulting Thing. Often this would be some arbitrary rotation and not a useful alignment. Now newly defined things use world space orientation and choose the front side from the six major axis-aligned directions (based on the orientation of the tool) to determine the "front" side of the Thing.
- Fixed a minor issue with the material editor's friction adjustment sliders. Previously it was possible to force one of the values out-of-range when static and dynamic friction are locked. Now both are clamped to stay in range.
Early Access 10
January 7th, 2022
Overview of changes in this release:
- Improvements to the way joints are handled in some cases, which should improve physics interactions overall.
- Now hinge, sliding, and ball joints use forces and torques to make the joint reach its target when the joint is not dynamic, but one of the attached bodies is. Previously this would have been done kinematically (i.e., the bodies would be "teleported" to their expected positions), which in many cases didn't produce realistic physics reactions.
- New "motor" options for hinge joints. When motor is enabled, the hinge rotation parameter becomes rotation speed, which controls how fast the hinge turns. Note that if the hinge is dynamic the motor option will still cause it to spin, but allow it to spin faster than the target velocity (i.e., freewheel). If the joint is not dynamic, the motor option will cause the spin to slow down if necessary to achieve the target velocity.
- New tension parameter for hinge and sliding joints. When these joints are not dynamic, but their attached bodies are, forces and torques are used to achieve the target. Lowering the tension makes the joint more "springy" and increasing it makes it tighter and track the target closer.
- Wire workflow improvement: now the socket on a wire parameter panel can be used to wire the socket it is attached to. This can make it easier to access sockets that end up embedded in geometry (like a hinge). Place a parameter panel for a hard to reach socket and then use it to access the socket rather than the socket directly.
- Some performance improvements for scenes with large numbers of wires and sockets.
Early Access 9
December 10th, 2021
Overview of changes in this release:
- New Rotation Sensor gizmo, which can be used to detect the orientation of a group of objects, or the rotation required to point at a particular group of objects from the position of the rotation sensor.
- A rotation sensor can be combined with a ball joint to make the joint point in a particular direction. For example a ball joint plus rotation sensor can be used to make a camera point at a particular target.
- Rotation sensors allow targeting the major world directions (up, down, north, south, east or west) or an object target using category IDs to identify the target (or a collection of targets).
- Rotation sensor also provide a socket with the angle between the sensor and it's target.
- New Rotation Combiner gizmo, which can be used to combine two rotations in different ways.
- Rotation combiner "combine" mode concatonates the two rotations together ( right after left, e.g., left x right).
- Rotation combiner "relative" mode computes the relative rotation of right compared to left (e.g., inverse(left) x right)
- New Rotation Decomposer gizmo, which separates a rotation into latitude, longitude and twist/roll.
- The rotation decomposer works in both directions so it can be used to split a rotation into 3 angles or the other direction combining 3 angles back into a rotation.
- Ball joint gizmo now has a little tab (on the light green side) to identify it's orientation. When combining a rotation sensor and ball joint, align the tabs on the two gizmos so the sensor's rotation can be used to drive the ball joint.
- New Collision Trigger gizmo, which can be used to trigger collision detectors even when there are no physics/dynamic objects involved. Normally a collision detector only detects collisions between two dynamic objects (or one dynamic and one static object). A collision trigger gizmo can trigger detection between two static objects (although a collision between two collision triggers is not detected).
- Collision trigger has a category ID option, which can be used to filter collisions.
- Two new options for materials that affect physics, which can be found in the "Interaction" section of the material editor:
- mass checkbox - when checked, objects with this material contribute to the group's total mass. It is checked by default, but can be turned off to add objects to a group that don't affect its mass.
- collides checkbox - when checked, objects with this material collide with other physics objects. It is checked by default, but can be turned off to add objects to a group that don't collide but rather pass through other surfaces in the same space.
- New field of view socket for camera objects.
- New "thumbstick locomotion" option for hand grip objects. This makes it possible to prevent the thumbstick from affecting locomotion when a hand grip gizmo is gripped, so the thumbstick can be used for other purposes.
- New Time Smoother gizmos for scalars, colors, and rotations. Time smoothers have "raw" and "smooth" sockets where the smooth value tracks the raw value, but changes are smoothed over time. An amount parameter controls how agressively they are smoothed.
- New Blend gizmos for scalars, colors, and rotations. Blend gizmos blend between two values based on a scalar value where 0% results in the "left" value, 100% results in the "right" value, and inbetween values proportionally blend between the two.
- New Ray Pointer gizmo, which casts a ray in a particular direction and provides information about the surface hit. A "detected surface" on/off socket indicates if any surface is found along the ray direction up to a user-adjustable limit. The distance to the hit surface is provided along with the horizontal/vertical position on the surface.
- The ray pointer also has a category ID to allow filtering hit surfaces.
- New "round" option for the Number to Scalar gizmo, which defaults to on. When mapping the 0-100% range to whole numbers, usually the scalar value is rounded to the closest whole number, which works well for example when these numbers represent ticks on a ruler or dial since a value inbetween the ticks will be mapped to the closest tick.
- However when mapping the 0-100% range to the space inbetween ticks (note that n ticks imply n-1 spaces) we instead want to map the entire space between two ticks to the same value. Disabling the "round" option causes this to happen so instead of mapping to the closest tick, the gizmo picks the closest tick that is also less than the percent value (i.e., the floor function).
- Performance improvement to how wires are evaluated, especially in scenes with large numbers of wired sockets.
- Performance improvement to how wire sockets are rendered, especially in scenes with large numbers of sockets, wired or otherwise.
Early Access 8
November 5, 2021
Overview of changes in this release:
- New circuit board object provides a new way to manage collections of wired gizmos. Gizmos can be placed on circuit boards and connected with flat wires making it easier to organize.
- Not only do circuit boards help to organize wires and hide complexity, they allow the user to make re-usable components. Circuit boards can be saved to the user's Thing library for use in other projects.
- Circuit boards can have any number of "interface" wire sockets using any of the Thingamajig types (scalar, number, color, rotation, etc.). The user can decide which values of internal gizmos are exposed on the edges of the circuit board and which are encapsulated in the circuit board.
- The user can set the name of circuit board interface sockets and arrange their order around the gizmo sides. The parameter editor panel for these sockets contains an additional section (accessed by the disclosure triangle button) that lets the user edit the name and change their order.
- A circuit board can be closed in which case it turns into a gizmo box with exposed sockets and a name and description selected by the circuit board creator. It can be reopened at any time as well.
- The user can place existing gizmos onto the surface board and they will become "docked" and attached to the circuit board. If the docking gizmo is wired to other gizmos, they will be docked to the circuit board as well.
- Gizmos that directly interact with the scene (for example, are affected by their position in the scene, e.g., a proximity detector) can not be placed in circuit boards, but they can be wired to circuit board interface sockets.
- Circuit boards can be nested so one circuit board can contain another with unlimited depth. A nested circuit board can be opened up in-place or closed into a gizmo box.
- Wires on the circuit board are aligned to horizontal or vertical directions and are automatically routed, but the user has the ability to customize their position.
- Wires outside of circuit boards are now allowed to be fairly long before being hidden and replaced with stubs (10 meters). Scenes using circuit boards avoid a lot of wire clutter.
- Wires (both in and outside of circuit boards) now have an outline on their edges to making them easier to see, especially when wires overlap.
- On/Off Opposite gizmo now has an "enabled" socket. When disabled, the left and right sockets are set to equal rather than their opposite.
- New Color Decomposer gizmo. This converts a color to both RGB and HSV or the other direction (RGB or HSV to Color).
- New Random gizmos (for Scalar, color, number or rotation). These gizmos have a trigger socket that when triggered sets its value socket to a random value of the appropriate type.
- Fixed an issue with Wave Generator where the noise button would show the wrong noise texture sometimes when there were multiple Wave Generators in the same scene. Number Comparer and Text Comparer now support less-than-or-equal, greater-than-or-equal, and-not-equal operations.
- Changed the default size of Value Animators so they're 75% smaller, which is consistent with other gizmos.
- Parameter editor panel for trigger values now highlights the trigger button when it detects a trigger has fired.
- Logic Operator gizmo now is cosmetically a closer match to other gizmos.
- Fixed an issue with the Timer gizmo where by default it was 60% smaller than other gizmos.
- New Timer gizmo parameter to better control the duration. Now there are three choices for duration (fast, regular, slow) to define the duration range. There is also now an indicator light that pulses when the trigger activates.
- New lifetime mode parameter for Thing Emitter gizmo. The mode provides three options that control the lifetime range of emitted objects: slow, fast, and infinite. Fast sets the max duration to 20 seconds. Slow sets the max duration to 1 hour. When set to infinite, the duration parameter is ignored and emitted objects are not destroyed (until play mode is exited or the scene is reloaded - infinite lifetime emitted objects are still "temporary" objects).
- New destroy-all socket for the Thing Emitter Source gizmo. This is a trigger type socket that when triggered destroys all objects emitted from that source.
- New tick delay parameter for one-way gizmos. The tick delay is useful to control timing among gizmos. Each tick (i.e., update cycle), each gizmo updates itself based on any changes to its socket values. Sometimes it is necessary to delay a path when a gizmo depends on another value being computed on another section of the graph. When the delay is active, the one-way gizmos buffer up changes and release them in a first-in-first-out manner.
- Now the user can grip dials, faders, and joystick joints with the move/rotate or physics tools and the isGripped parameter is set accordingly. Previously isGripped was only set in play mode, which made testing circuits more cumbersome.
- New Scalar Comparer gizmo (works like Number Comparer and has the same operands)
- New Number Clamp and Scalar Clamp gizmos. Start and end limits can be individually enabled/disabled.
- Fixed an issue where it was possible to enable physics for gizmos (or groups) with no real scene geometry. The result is the gizmo would fall through the floor.
- Fixed an error that would occur when pointing at a socket without the trigger down and pressing the A button.
- Made the Trigger Toggle gizmo a bit larger so it is easier to grab and manipulate.
- Scalar-to-Text gizmo now works bidirectionally so text can be converted (parsed) into scalar values.
- New length parameter for the Text Clipper gizmo, which can be used to clip text from the end rather than the start.
- Fixed an issue with several gizmos that display a scalar value gauge, where the gauge wasn't clamped and could become large if the value was out-of-range.
- Force gizmo has been updated with some new parameters making it easier to control. A multiplier socket (number type) allows easily scaling the force amount to large or small values. The force amount parameter (scalar type) then allows finer grain adjustments within that range. Also there's a new "use mass" parameter. When disabled, the force is independent of the mass of the object it's applied to. Note that this update is actually a new Force gizmo that looks the same, but has three sockets. The old Force gizmo is not compatible and still exists to support scenes that have previously used it.
- Removed the lock button from Keyframe Animator gizmos and replaced it with a make key trigger socket. Instead of unlocking the lock button and changing the result value to make a key, the trigger socket causes a key to be created at the current progress position when the trigger is activated.
- Fixed an issue where the Changed Detector gizmo had elements that were visible in play mode.
- Fixed an issue where sometimes wire sockets wouldn't highlight orange even when they were wired.
- Renamed the Number to Value Range gizmo to Number to Scalar and Value to Text gizmo to Scalar to Text to be consistent. Note that in Thingamjig, "scalars" are real numbers (normalized to the 0-100% range) and "numbers" are whole numbers (limited to 9 decimal digits and +/- sign, i.e., -999999999 to 999999999)
Early Access 7
August 5th, 2021
Overview of changes in this release:
- Improved interaction with dial joints. Now the position of the grip point relative to the center of the joint is considered. If gripped close to the center, rotation of the user's hand will rotate the dial. If gripped away from the center only the position of the user's hand is considered and motion in a circular direction (like turning a crank) will rotate the dial. This change affects the move/rotate tool, physics tool, and play mode.
- Improved how tap/nudging works with dial joints. Taping a dial joint with the index finger in play mode or with the physics tool's "touch finger" will move the dial CW or CCW. Fixed some issues that would sometimes cause the dial to rotate in the wrong direction.
- Made the user's hand lock to an interactive joint (dial, fader, joystick, etc.) when gripped rather than be allowed to move freely. The hand rotation still matches the user's actual hand, but the position may not if the user moves their hand away while gripped. If the user moves away from the joint while gripped, their arms may appear to stretch a bit, but will then automatically release the grip.
- Improved interaction with interactive joints when they are attached to a dynamic object. Now if the user grips an interactive joint on a dynamic object they will be able to affect both the joint and the object. For example, a dial can be attached to a hinge (e.g., a door knob). If the door and door knob are both dynamic the door will swing freely and be affected by physics. Now the user can grab the door handle and both rotate the dial and swing the door at the same time.
- Fixed an issue where sometimes a non-dynamic joint attached to a dynamic object would appear with the wrong joint position when a scene was loaded (touching it with the Move/rotate tool would cause it to update to the correct value).
Early Access 6
July 9, 2021
Overview of changes in this release:
- New "Change Detector" gizmo box (for scalar and number type values). This gizmo monitors a value and reports if the value is increasing or decreasing and detects peaks and valleys. The scalar version also detects when the value wraps around the [0, 100%] range in either direction.
- Improved link sharing. When you share a scene in the scene lobby and press the button to copy the link to the clipboard, the generated link will now take the user to a page that describes what the link is (a Thingamajig scene) and how to view it (link to download Thingamajig). So if you send a shared-scene link to a friend and they click on the link they will see this page. If the link is in the clipboard when Thingamjig is running, the Thingamjig desktop window will display a button that will automatically load the scene referenced by the clipboard link.
- Fixed several issues that caused grouping or regrouping to fail with particular models.
- Fixed an issue that sometimes prevented dial or hinge joints from wrapping interactively when limits are turned off.
Early Access 5
June 15, 2021
Overview of changes in this release:
- New button to set the root models folder to use when searching from the files tab of the Home Table. The default folder is MyDocuments\Thingamajig\models. The models folder can contain subfolders, which will also be searched. If the search term matches a subfolder name, the search results will contain the contents of that folder.
- The button to set the models root folder can be found on the desktop UI window in the "Options" tab.
- Fixed some issues with sliders in the "Options" tab having incorrect anchors making them misaligned when the window size was anything other than 1920x1080.
- Now when on the Poly Archive tab of the Home Table and the search term is blank, a set of top level categories are displayed allowing the user to browse these categories.
Early Access 4
June 11, 2021
Overview of changes in this release:
- Replaced Google Poly integration with new "Poly Archive". This is a subset of models from Google Poly (primarily models authored by Google) that we have preserved before Google's announced shutdown of the service at the end of this month.
- Fixed several cases with joints where tooltips would appear in awkward positions and often obscured each other.
- Adjusted colliders for the push button joint to make it easier to select its components.
- Fixed several cases with gizmos where tooltips from sockets were obscured by the gizmo's tooltip.
- Fixed an issue with wire cone gizmos (used by particle systems, ball joint, etc.) where the gizmo would become stuck selected (yellow) and require reloading the scene to get it unstuck.
- Fixed an issue with the path joint where an orphaned touchpad disc would appear floating in the scene sometimes after selecting a control point.
- Fixed an issue with the path joint where undo didn't work properly after modifying a control point.
Early Access 3
May 28, 2021
Overview of changes in this release:
- Fixed a bug where a monitor object would appear black when loading a scene even if its category ID was set to match a scene camera.
- Now camera objects and monitors default to matching category IDs so if you create a new camera and monitor the monitor will show that camera's view by default.
- A message is now displayed when Sketchfab throttles downloads. Previously downloads would silently stop working. Unfortunately Sketchfab appears to block downloads for 24 hours after around 50 downloads in any 24 hour period. When this happens the user will be informed by a message that appears in front of the Home Table.
- Moved the location of the Home Table's scene lobby and play mode buttons to front and center since these are important and often used controls.
- Adjusted the grip position of the Home Table slightly so the keyboard isn't so close to the user. You can now also grab and move the Home Table to reposition it.
- New option to share a scene in Scene Lobby. Place a scene bubble in the suction cup on the left side of the shared scene table and a share button appears. Sharing a scene uploads it to the cloud resulting in a link that can be shared with others via email or other types of messaging.
- Currently a shared scene link refers to a .tmj file, which is a package containing the scene and related assets. Now when a .tmj link is copied to the clipboard a button automatically appears on the Thingamajig desktop window: "Load Scene From Clipboard Link". So a person who receives one of these links can copy it to the clipboard, flip over to the Thingamajig window and press the button to import the shared scene.
- Fixed a bug where "hidden" objects (their ghosted outline) weren't visible in camera views.
- Added a new mass option to the physics tool. In addition to "light", "regular" and "heavy" there is now "ultralight" to set the mass based on a low density material.
- Fixed a bug where sometimes the create primitive and/or material tools would get stuck in raycast mode.
- Now any updates to builtin Things are automatically applied to the current installation the first time Thingamajig is run after the app is updated.
Early Access 2
May 14, 2021
Overview of changes in this release:
- Fixed a bug where parts of the material editor weren't showing up in the desktop UI's camera views.
- Fixed an issue where the tutorial wasn't working properly in left-handeded tool mode.
- Added an option to the start of the tutorial to allow the user to select left-handed tool mode.
Early Access 1
May 5, 2021
Released publicly on Steam. We will now refer to releases as "Early Access" rather than "Alpha". Overview of changes in this release:
- Fixed a bug where gizmos would appear in some desktop UI cameras during play mode.
- Fixed a bug where a scene bubble was left black after it was first cloned.
- New 'about' tab on desktop UI with links to Thingamajig website, Discord, etc.
Alpha Release 15
April 30, 2021
This is the fifteenth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Tooltips for buttons and controls on the Home Table and Material Editor
- Tooltips for all object gizmos, which are especially helpful for smaller gizmo boxes with few other differentiating features.
- New Debug tab on desktop UI with options to:
- Reset preferences - clears the registry of all Thingamajig settings and exits the app.
- Browse Thingamajig app data folder - deleting your Thingamajig folder may help resolve issues, especially if you've upgraded from a previous version of Thingamajig. Note however that you may wish to save the scene folder located in the Thingamajig folder, which contains the scenes you have created.
- Report an issue - buttons to report an issue vie email, Twitter DM, or the Thingamajig Discord server.
- Changed the player avatar color to light purple. It is planned to ultimately provide an option to customize this, but choosing purple in the meantime to avoid a bias toward any particular natural skin color.
- Fixed an issue where keyframe and value animators would sometimes have their tooltips hidden
- Fixed an issue where the user could attempt to enter a shared scene bubble without first importing it into the scene lobby. Now if the user enters a shared scene it is automatically imported and placed above the original in the scene lobby.
- Changed to origin of the scene lobby so new users are placed closer to the center the first time they start the app.
- Made the default size of the Thingamajig desktop window 1920x1080, which fits the UI.
- Fixed a bug where the user's position/rotation wasn't reset when ending play mode.
- New skip button in tutorial allows the user to skip past a section.
- Fixed an issue in the tutorial where the tutorial would progress even if the user had selected the wrong tool.
- Tutorial now introduces the desktop UI options section and provides the user the option to disabled comfort mode at the start of the tutorial.
- Things now default to 100% scale when selecting them from the Home Table. Previously they would default to an arbitrary scale that fit them to the box for their Home Table slot.
- Fixed an issue with keyframe animator objects where they keyframe editor would point to the wrong spot after docking with another animator object.
- Fixed an issue with the transporter object where its default gizmo size was too large
- Fixed an issue with Oculus touch controllers where the thumbstick didn't work to push/pull gripped objects using the move/rotate or physics tool.
Alpha Release 14
January 14, 2021
This is the fourteenth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Construction Plane Object
- New construction plane object replaces the old jig object.
- Use "edit jig" mode of the snap tool to create construction plane objects that are aligned to scene geometry. Use the trigger to place points to define the plane orientation and origin.
- While placing points, a panel appears allowing the user to finalize or cancel plane creation. The plane is fit to the selected points and centered in the bounding box of the points.
- This makes it easy, for example, to locate the center of a complex polygon and align objects (like a hinge) to it.
- The create panel also has rotation buttons to choose the alignment point. The plane is fit to the selected point and its rotation in that plane is aligned to one of the points or the center of one of the segments connecting points.
- The create panel itself can be grabbed and moved in case it is obstructing the user. Otherwise it will float above the points as they are being selected.
- The construction plane object is also included in the built-in Thing library and can be created from the Thing section of the home table.
- The "edit jig" mode of the snap tool can also be used to edit existing construction plane objects. When this mode is entered handles appear on construction plane objects allowing their width/height to be edited.
- The construction plane has a frame and center lines that can be grabbed in edit jig mode to create user-defined guides. Grabbing an outer edge creates a vertical or horizontal guide. Grabbing a center line creates a radial guide.
- When a guide is gripped, the touchpad provides buttons to increase or decrease the number of subdivision ticks, which are snap targets.
- Construction planes can be scaled with the scale tool or by grabbing with both hands while using the move/rotation tool. Scaling a plane affects the size of the text used for dimension annotations and the thickness of guidelines as well as the overall size of the plane.
- When a construction plane is created with the snap tool in jig mode, the initial scale of the object is set to the current world scale. So for example, if the user is zoomed in to a small scale (so world objects are large) the plane will be created with small text and line thickness suited for that scale.
- Changing the width/height of a construction plane by adjusting it's handles changes its size, but does not affect its scale.
- Thing Emitters
- Changed the way objects are selected by Thing emitter source gizmos. Now objects are only considered part of the source set if they overlap the Thing emitter gizmo volume. Previously all object connected by wires to an object in the source volume would also be included.
- Wires that connect an outside object to an object inside the source volume are now cloned when the Thing is emitted so that the emitted object has the same wire connection. This allows, for example, emitting an object with a collision detector gizmo where the gizmo is wired to an object outside the emitter source volume.
- Made various performance improvements to allow emitting complex configurations while minimizing lag.
- Fixed some issues where emitted nodes sometimes weren't completely reset to the proper initial state before being emitted.
- Miscellaneous
- Fixed a bug where gizmo objects grouped with other objects would affect the center of mass and overall mass of the rigid body group. So for example a sphere grouped with a collision detector object might wobble when it rolled due to the gizmo affecting the center of mass.
- Fixed a bug where some gizmos, like the proximity sensor's sphere or box gizmo, would get stuck highlighted (as if a tool was pointing at them), which rendered them unusable until the scene was reloaded.
- Fixed a bug where in some cases after creating an object from the home table, the tool's touchpad disc would become stuck displaying buttons to control the object's placement and alignment.
- Fixed and issue that was preventing Oculus Quest2 devices from working properly in link mode preventing the thumbstick controllers from being recognized.
- Fixed an issue where deleting an object connected to an open and pinned wire panel could sometimes lead to a corrupted scene file.
- Made default material editor colors for new scenes more muted and desaturated. Also shifted red to the last slot so it isn't the default material.
Alpha Release 13
December 2, 2020
This is the thirteenth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- New material editor
- Replaces old material selector, which only provided a small set of possible materials
- Material editor provides 6 material "slots" to switch between for editing.
- The material tool assigns the material from the selected slot and also provides and "eyedropper" mode to pull materials from the scene into the editor.
- Allows editing of basic material properties: color, roughness, metallic, self illumination, and transparency.
- Materials now also include properties that affect physics: static friction, dynamic friction, and bounciness.
- Additionally a set of categories can be associated with a material. Category IDs can be used to filter collisions and proximity sensors among other things.
- There is an "Appearance" tab for editing the visual properties of a material and an "Interaction" tab for editing the physics-related properties as well as selecting categories.
- The interaction tab provides a simple physics sandbox to help tune physics parameters like friction and bounciness.
- External materials brought into the user's scene by importing models from Google Poly, Sketchfab, or imported GLTFs can be edited to a limited extent: only the interaction parameters are editable.
- The materials in the 6 material slots are stored with the scene. Additional materials can always be stored in the scene by assigning them to objects. For example, create a series of spheres to represent a color palette and use the eyedropper tool to pull them into the material editor as needed.
- Miscellaneous
- Pinned wire value panels are now persisted across Thingamajig sessions. If the user opens a panel and pins it, that panel will remain in place the next time they open the scene in Thingamajig.
- Minor tweak to clone tool to make the positioning of the clone box slightly more intuitive.
- Fixed an issue where many of the gizmo objects didn't have automatic snap points generated for the centers of its six sides. Now it is easier to layout gizmos on a plane by using the snap point on the back of gizmo boxes.
- Fixed an issue with the home table where sometime certain search terms weren't recognized (e.g., "gravity" didn't match the "anti-gravity" Thing.
- In the Scene Lobby, scene bubbles now store their orientation across Thingamajig sessions. So if the user rotates a bubble to face a certain way, the bubble will maintain the orientation for the next app session.
- Fixed an issue where the scene bubble's rendered preview image was mirrored on the horizontal axis.
- Fixed a bug with the environment object where the sun rotation gizmo was visible in play mode.
- Fixed an issue with the create object tool's primitive selector where it would remain visible the first time it was selected even after the user released the trigger.
- Made it possible for the tools with bubble selectors (like the material paint tool) to still interact with controls (like parts of the material editor). When pointing at a control with a bubble selector, a ray selector will temporarily appear.
- Fixed an issue where scene snapshot images were not included when exporting TMJ files.
- Fixed various cases where the touchpad would get stuck displaying certain context sensitive tools. In some cases this would leave the tool unusable until the app was restarted.
- Imported 360 video backgrounds are now included in shared scenes if they are stored in a local file. If the video is referenced by an external URL then it is assumed the exported scene will still have access to that URL and a copy of the video file is not made.
- Custom fonts are now included in exported scenes.
- New "all" option for collision detector object. When "all" is turned on, the category ID is ignored and all collisions are detected regardless of category.
- Collision detector object will now only detect a collision if both sides of the collision have a matching category (or the all options is enabled). Previously the object group containing the collision detector gizmo didn't have to have an assigned category.
- New set of 6 pre-configured sounds is now part of built in Things (search for "audio" on the Things tab of the Home Table).
- Standardized the look of checkbox controls across all gizmos.
Alpha Release 12
October 22, 2020
This is the twelfth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Fixed a bug where the gravity gizmo was visible in play mode and made some minor collider improvements
- Fixed a bug where wiring a trigger value also caused the trigger to fire
- Fixed a bug where a scene bubble tooltip could become orphaned in the scene lobby
- Fixed a bug that sometimes caused extremely large scene lobby tooltip panels
- Fixed a bug where hiding the home table while gripping an item produced unexpected results.
- Now it is possible to hide the home table while gripping an item and the item will remain gripped. The user can then place the item without the home table obscuring their view.
- New joystick joint object. Somewhat similar to a dial joint, but with two dimensions. The joystick joint has two scalar valued sockets to represent its current horizontal and vertical position. The stick is constrained to a rectangle defined by the horizontal and vertical limit angles. The sides of the rectangle can be gripped to adjust the limit angles. As with other joints, it is expected the user will group the two sides of the joint object to geometry in which a player in play mode can interact with.
- New enabled/disabled parameter for one-way gizmos, which allows dynamically enabling or disabling a wire connection.
- New Number Value Animator. Works like the other value animators, but for the Number (AKA whole numbers) type.
- New Value Pump gizmos. Value pumps are simple gizmos with two sockets of the same type and a third trigger type socket. When the trigger is fired, the input value is copied to the output value. Value pumps allow making loops in the wire graph that iterate upon a trigger fire. For example the result of an addition can be fed back as an operand to the add gizmo so that every time the trigger is fired a value is added to a running result. Value pumps are available for all the wire types.
- New on/off opposite gizmo. This is a simple box and inverts an on/off value.
- New 'is gripped' on/off type parameters for dial, fadar, and joystick joints. This value is set during play mode when the player grips or releases the joint.
- Fixed an issue with value animators that was causing unexpected results when the transition time was set to 0.
- Changes to Mount Object:
- - Mount Object no longer handles detecting and activating the mount during play mode. The trigger radius socket has been removed and replaced with an "is mounted" on/off type value. During play mode, when "is mounted" becomes "on" the player assumes the mount position. When "is mounted" becomes "off" the player dismounts. The scene creator can wire to this value to control the method the player triggers the mount in play mode (e.g., wired to a switch, proximity detector, snap socket, etc.).
- - The spinning part of the gizmo is no longer visible in play mode. The scene designer can control what objects (if any) represent the mount object.
- - The controller horizontal and vertical parameters are now mapped to the thumbstick on devices that have them or the trackpad for devices that don't (like Vive).
- - The controller button pressed parameter is now mapped to the controller's trigger button
- Wire Value Editor improvements
- - Now after pulling out a wire from a socket and pressing the touchpad to show the editor, the editor panel will automatically be pinned.
- - Holding the wire still until the panel appears results in it unpinned, but can still be pinned by pressing the touchpad.
- - Fixed issues with wire value editor panels when world scale was not 100%.
- - Now the wire panel will appear at the user's scale regardless of what zoom level their world scale is set to. If the user changes world scale with a panel gripped the panel will scale with the user.
- - When the user changes world scale, pinned (and ungripped) panels will remain the same size and not scale with the user. If the user later grips the panel it will scale to match the current world scale.
- - Wires to a wire value editor are no longer hidden regardless of how long they are.
- Timer gizmo improvements:
- - New socket for progress (AKA elapsed time)
- - New reset trigger socket to stop and reset the timer.
- - Text display on gizmo shows current time.
- Hand Grip improvements:
- - New trigger pressed scalar value parameter. Provides a continuous value indicating the amount the trigger button is pressed.
- - New 'is gripped' on/off type parameter. This value is set during play mode when the player grips or releases the object group containing the hand grip gizmo.
- - New horizontal and vertical thumbstick parameters.
- - New reset trigger for audio object. Stops playback and resets play position to the start of the clip.
- - Fixed an issue with the audio object where long file names extended outside of the gizmo.
- Trigger Toggle gizmo improvements:
- - Gizmo box is now larger and easier to grab.
- - New off trigger socket, which works in both directions. To summarize:
- - When direction is on/off => triggers :
- main trigger is called "on trigger" and fires when value becomes on
- second trigger is called "off trigger" and fires when value becomes off
- - When direction is triggers => on/off:
- main trigger is called "toggle on/off value" and toggles on/off state when triggered
- secondary trigger is called "set to off" and sets on/off state to off when triggered.
- - Trigger Toggle tooltips and wire value editor updates to new names when direction changes.
- New text gizmos:
- - Text Combiner - takes two text values and appends the second to the first.
- - Text Comparer - operator can be set to <, > or = to compare alphebetical order or equality.
- - Text Clipper - clips out a portion of a text value to produce a new text value.
- - Number to text gizmo can now be driven in both directions so it is possible to convert text to a number. If the text doesn't contain a recognizable number the result is 0.
Alpha Release 11
August 11, 2020
This is the eleventh alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Improved edit-mode teleport. Utility tool teleport button now uses a more familiar projectile style to choose landing location. Optional teleport "ladder" allows teleporting into open space based on the direction the user is looking.
- Improvements to Environment Object:
- - Choose between sky, gradient, and image/video background
- - Control over exposure to brighten/darken background environment
- - Control over sunlight when background is not set to sky (set sun position, color and intensity)
- - Solid color option for the ground plane
- - Click on color swatch to access color picker
- New desktop UI:
- - Tab panels appear at the bottom of the screen: Scene Properties, Options, Kiosk Mode, and Portal Camera
- - New choose background button allows picking an image or video file to use as the environment background.
- - User can also drag and drop files onto this button to set the background.
- - Options tab provides controls to customize aspects of the Thingamajig UI.
- - New comfort mode option uses tunelling effect to reduce motion sickness
- - New option to swap the tool setup between left and right hands
- - New "blick mode" for teleport without motion and teleport ladder option (to teleport into open space)
- - New option to invert mouse X/Y for desktop viewport interaction.
- - A "View" dropdown menu appears at the top of the screen that allows selecting the camera used for the desktop viewport. If the scene contains any camera objects they are listed in the menu using their category ID.
- - Press the escape key to toggle the visibility of the desktop UI.
- Can now use middle/right mouse to pan and zoom scene cameras and mouse wheel to zoom scene and third person desktop cameras.
- Scene name and description (if specified by the user) now appear in a panel above scene bubbles in the scene lobby.
- File section of home table now searches for all gltf files under Documents/Thingamajig/models. Gltf files can be at the root or any number of subfolders. Searches use each component of the path as search terms.
- Fixed an issue where the Thing emitter would sometimes leave a copy behind
- Fixed an issue where scene cameras were still using deferred rendering, which made them look slightly different.
Alpha Release 10
June 30, 2020
This is the tenth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Switched to Unity 2019.4 from 2018.2
- Fixed fog in desktop views, which wasn't working previously. In general desktop views now better match the headset view.
- New "scalar combiner" gizmo for compositing wire values. The scalar combiner operates on scalar wire values, which naturally have a range (e.g., defined by the limits of a joint). The combiner uses basic math operations (sum, difference, product, ratio) to combine the values and produce a result. Since these values naturally exist within a normalized range, (0-100%) there are options to determine what happens when the result is outside that range (clamp, wrap or unconstrained). There are also options to determine if each value is signed (range -1, 1) or unsigned (range 0, 1).
- Move/rotate tool's two-handed scale now supports snap. Works similar to two-handed world scale using grips with scale snapping to powers of two. The touchpad offers a button to enable/disable scale snap.
- Home Table now also supports scale snap. When an object is gripped from the Home Table with two hands, the user can scale with optional snap (enabled/disabled by touchpad button).
- Removed the "use original scale" touchpad option from Home Table since the user can use scale snap to easily get to 100% scale.
- Home Table now remembers the last scale used when creating an object and uses the same scale by default the next time that object is grabbed from the Home Table. This makes it easier to create a number of copies of the same object with the same scale.
- Fixed an issue where the group tool's ungroup-all feature sometimes caused the ungrouped objects to disappear until the scene was reloaded.
- Fixed an issue where the value property of the value-to-text gizmo didn't always show correct units when edited with the wire value editor.
- Fixed an issue where the wire parameter editor panel was left open after an object was deleted.
- New 'number' type to represent whole/integer numbers. Scalars continue to be used to represent normalized wire values for continuous type parameters. The number type doesn't have an inherent range like normalized scalars do (0-100%).
- New wire value editor panel for number type values allows setting the individual digits for the number as well as toggle the negative sign to make the number positive or negative. The number type doesn't have an inherent range like the scalar type, but is limited to -1 billion to +1 billion (i.e., 9 digits).
- New gizmos to work with number type:
- Number Counter - replaces 'step counter', which used a range scalar (0-100%) formatted to appear as a whole number. The number counter uses the new 'number' type and is simpler since it doesn't also need to specify a range of possible steps.
- Number-to-range - Converts a number type to a scalar range type by also specifying the minimum and maximum value for the range. For example, a minimum of 0, maximum of 10, and 5 as the number to convert results in a scalar value in the middle of its normalized range (50%). Note that this gizmo also converts in the other direction. If the scalar value changes the gizmo will compute the resulting number value (rounded to whole number) based on the specified minimum and maximum (0% maps to minimum and 100% maps to maximum).
- Number-to-text - Converts a whole number to text, no formatting parameters needed.
- Number-combiner - Simple math operations on whole numbers: add, subtract, multiply, divide, and remainder (i.e., modulo).
- Number-ratio - Calculates the ratio of two whole numbers and provides the result as a normalized scalar range value (0-100%)
- Number-comparer - Compares two whole numbers with <, >, and = options and sets an on/off value to the result.
- Deprecated the step counter gizmo, which is now replaced by the number-counter gizmo.
- Value animator track selector parameters now use the new number type rather than a scalar range.
- Dial and fader joint's step parameters now use the new number type rather than scalar range.
- However dial and fader's joint parameter is still a scalar. It can be continuous or have discrete steps based on the value of the step property (1 step means continuous). It can easily be converted to a number type using the number-to-range gizmo (wire dial/fader 'steps' property to number-to-range gizmo's 'maximum' property).
- Changed the definition of dial/fader joint's 'step' property slightly. It now means the number of possible steps not counting zero. Previously it included zero. With this new definition the step parameter of a dial/fader can be wired to 'maximum' value of a number-to-range converter to convert the range value to the correct corresponding number.
- New clone button on touchpad when gripping an object with the move/rotate tool. Pressing the clone button leaves a copy of the gripped object (while still retaining the grip).
- Clone tool now uses bubble select. Swipe the bubble (which can be sized with the touchpad) to select objects to clone. The position of the tool relative to the selection volume determines where the clones will be placed and a wire box shows the spot. This makes it possible to clone multiple objects that are not part of the same group in one step.
- Note that for both the move/rotate and clone tools, cloning won't copy wires unless both ends of the wire are connected to objects which are also being cloned.
- Thing tool now uses bubble select for Thing definition. Similar to cloning, using bubble select allows defining multiple ungrouped objects as part of the same Thing. Thing definition also doesn't include wires in the definition unless both ends of a wire are connected to objects that are also part of the definition.
- Fixed an issue with some imported GLTF models, where depth sorting was wrong causing some triangles to be incorrectly rendered in front of others.
- Making a new wire connection now causes the value at the end of the wire to be set to the current value at the start of the wire. Previously values wouldn't be updated until the value at one side of the wire changed so it was possible for two wired values to be out-of-sync.
- New one-way gizmos for all types (scalar, color, rotation, on/off, number, trigger). These allow making a wire connection between two values such that when one value changes the other is updated to that value, but not vice-versa. Wire connections are otherwise two-way.
- Allow value animators with only one track. This is useful for the case where the value animator is used to reset a value to its default after it has been changed by some other source attached to the wire network.
- Added score tracking to the shooting gallery example.
Alpha Release 9
June 8, 2020
This is the ninth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- New text object to display text with a verity of fonts and control over size, outline, color, alignment, etc. Actual text content can be attached to another text parameter via wiring.
- New value-to-text object to convert wire values to text, with options to specify units and precision.
- New wire value editor to edit text type parameters.
- New note object for adding comments and notes to the scene (not visible in play mode).
- New text value animator. Works similar to other value animators and allows switching between text values based on triggers.
- New value animator track selector parameter. In addition to using a trigger to activate a track, the selector parameter allows using a scalar value to select a track by index. This parameter has been added to all value animators.
- New step counter gizmo. Somewhat similar to the value accumulator, which is now deprecated and which this gizmo replaces. It is an integer based counter to count to a user-defined number of steps.
- Changed dial/fader joint "step subdivisions" parameter to just "steps" and defined it to mean the total number of possible states rather than the number of subdivision markers. The steps value is two greater than the number of subdivisions (to account for the end points). This definition is consistent with the new step counter's step parameter. A step counter can be wired to a fader or dial joint (by connecting both steps and value) to add increment/decrement triggers to the joint.
- New one-way trigger object. This gizmo has two trigger parameters. When the left trigger is fired the gizmo activates the right trigger, but not the other way around. This allows two trigger parameters to activate a third without also activating each other.
- Fixed some cosmetic issues with tooltips, e.g., tooltip blocked by connector lines and shaded with ambient occlusion.
- Made tooltips larger so they are easier to read
- New scene screenshot option in desktop window UI. The "Add Screenshot To Scene" button saves a PNG image of the current view in the scene's attachments folder.
- Prevent wiring to sockets of the same object unless the user first moves their hand away from the original socket. Prevents accidental wiring of nearby sockets.
- Fixed an issue with dial/fader joints that sometimes caused subdivisions ticks to be permanently highlighted.
- Fixed sliding joint issue that caused erratic movement with move/rotate and physics tool when joint was scaled.
- Fixed an issue with the clone tool where most gizmos would be cloned in place (directly on top of the original) rather than side-be-side.
- Fixed an issue where an object would sometimes change size when grouped by holding two snap points together.
- Fixed an issue where they player would fall through objects that were hidden with the visibility tool when in play mode (where the objects are visible).
- New and updated sample scenes accessible from the Scene Lobby.
Alpha Release 8
May 12, 2020
This is the eighth alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Fixed an issue with value animators where the speed icons were reversed.
- New "dial" and "fader" joints. These provide an easy way to make controls players can interact with. Dials and faders can have discrete steps or be continuous.
- New snapping option when adjusting hinge joint limits.
- Objects with a path joint can now be made dynamic and won't fall off the path. Path joints now uses a Unity fixed joint when both the path and the object on the path are made dynamic.
- Fixed some issues related to docking the new keyframe animator objects.
- Fixed some issues with the lookat joint that made it behave strangely when manipulated with the move/rotate tool.
- New visibility tool. The visibility tool allows objects to be hidden in edit mode. A hidden object is mostly transparent, but still slightly visible. Hidden objects are not selectable by tools though (except the visibility tool's unhide mode).
- New improved wire value editors. Now all wire value editors have a pin button, which make them remain visible after releasing the tool's trigger button.
- Cosmetic updates to wave generator, audio source, and time-of-day/environment objects to give them a more consistent style.
- Fixed an issue with switch joints where it was possible to 'flip' a switch by touching it on the incorrect side (i.e., touch a switch from above to turn it on).
- Fixed an issue with the scalar wire value editor where pressing the touchpad to show the editor usually also caused the value to change slightly due to touchpad movement.
- For tools that use bubble selection (paint, group, visibility, and delete) only allow the bubble size to be changed while the trigger is pressed. Also show a touchpad icon during trigger press to indicate the bubble size is changeable by swiping on the touchpad.
- For Oculus Touch and Windows Mixed Reality controllers, allow the thumbstick to be used to size the bubble selector (while trigger is pressed). Oculus Touch controllers don't have a touchpad and WMR controller's touchpad often becomes flakey and unreliable.
Alpha Release 7
April 16, 2020
This is the seventh alpha release and adds new features as well as bug fixes.
The following is an overview of changes found in this release:
- Reworked keyframe animator objects with workflow improvements and new features
- New on/off and trigger keyframe animator objects
- Improvements to hinge, sliding, and ball joint workflows
- New push button joint
- New physics tool "touch finger" mode for easy testing of physics interactions
- Play mode "punch mode" and "touch finger" to interact with physics objects and activate switch and push button joints
- Fixed an issue with value animator objects to enable them to transition from an arbitrary value rather only other track values
- Fixed error on Quest when showing the wire parameter editor
- Fixed an issue with Windows Mixed Reality controllers that caused hands to have incorrect poses (slightly offset and fingers sometimes in wrong position)
- Fixed some issues with wires that sometimes prevented them from appearing
- Fixed an issue on Quest with hand grip objects where objects would release immediately when grip was released instead of requiring a second grip squeeze
- Fixed an issue on Vive where the trigger button wouldn't activate the trigger sockets on hand grip objects in play mode
- Fixed an issue where it was sometimes difficult to select the target socket for a new wire
- User documentation has been updated to reflect new features
Alpha Release 6
March 3, 2020
This is the sixth alpha release and adds support for Oculus touch controllers.
The following is an overview of changes found in this release:
- Fixed an issue with Oculus touch controllers where the lack of a trackpad meant several critical features of Thingamajig were not accessible.
- With Oculus touch controllers the thumbstick now replaces trackpad functionality.
- Fixed a bug with the color picker where if the current color was black the picker would not allowing selecting a different color unless the brightness was first increased to a value greater than zero.
Alpha Release 5
February 27, 2020
This is the fifth alpha release and includes both bug fixes and new features.
The following is an overview of changes found in this release:
- New rotation editor allows editing rotation values with the wire parameter editor, such as the rotation parameter of a ball joint.
- New touchpad button appears when grabbing a wire from an editable socket that allows opening the wire parameter editor immediately rather than waiting a moment or two for it to appear.
- Performance improvement to model loading reduces frame drops.
- New value animator object provides an alternative to keyframe animation that is more dynamic/interactive. When a value animator track is triggered it blends the current value to the value for that track.
- Fixed a bug that caused some objects to be moved after breaking apart an imported model.
- Darkened the background of tutorial panels so there's more contrast with the text making it easier to read. Also increased the tutorial panel font size slightly.
- Made tutorial panels move less and avoid placing them too close to the user. They still rotate to face the user, but don't generally move with the user unless the user moves far away.
- Made tutorial panels move-able by the user so they can be moved out of the way in cases where they are in an awkward position.
- Tutorial text now refers to controller buttons by name instead of "this button".
- Tutorial panel indicator lines now have an arrow type head when referring to controller buttons so the actual button isn't obscured by the circle that used to be at the endpoint.
- Fixed a bug where the app menu button wasn't working to return the user to the current scene from the scene lobby if they started and exited the tutorial.
- Turned off the rotation of scene bubbles for shared scenes in the scene lobby. Avoids uncomfortable motion sickness if the user accidentally gets their head inside one.
- Fixed a bug where after dragging a shared scene into the scene lobby, the scene bubble would appear black instead of showing the contents of the scene.
- Fixed a bug that caused orphaned tooltips to be left behind when focusing both controllers on the same socket.
- Fixed a bug with the wire parameter panel for the wave generator's wave type parameter where the size of the panel was too small to fit all the buttons.
Alpha Release 4
February 13, 2020
This is the fourth alpha release and mainly includes bug fixes.
The following is an overview of changes found in this release:
- Fixed some issues with wires where they could appear segmented.
- Wires now behave more consistently at difference scales. For example, previously wires would move slowly at large scales and twitchy at small scales.
- Wires are now hidden when they are longer than a meter or two.
- Stubs appear when a wire is hidden. Focus the controller on the stub to highlight both ends. Grab a stub with the trigger to expose the wire.
- Fixed an issue with Google Poly where some object would preview all black.
- Improved shared scene handling so shared scene appear sooner the first time the app is started.
- Fixed a bug where cloning a key would move the original
- Fixed a bug that caused diagonal lines to appear on some objects when highlighted
- Fixed a bug where some objects wouldn't appear highlighted (e.g., docked animator objects).
Alpha Release 3
January 30, 2020
This is the third alpha release and mainly includes bug fixes.
The following is an overview of changes found in this release:
- Fixed Scene Lobby issues, espcially related to the Scene Lobby state for a new Thingamajig install
- Fixed some issues related to regrouping geometry
- Improvements in play mode when the user is riding on a fast moving vertical platform
- Fixed some cases where gizmo parts were visible in play mode
- Now possible to break a path joint by plucking it off the path, similar to other joints (making it easier to weld to other objects)
- Fixed an issue with deleting all scene bubbles in scene lobby
- Fixed some issues with thing emitter preview objects showing up in play mode
- Fixed an issue with importing a modified GLTF into a scene where an old version of the GLTF previously existed
- Fixed an issue that prevented hand-held objects from triggering a proximity sensor
- Made sphere, box, and cone gizmos (used by objects like proximity sensor, particles, lights, etc.) have consistent line widths and better matching colliders so they are easier to select.
- Proximity sensor now has a box option in addition to sphere
Alpha Release 2
January 9, 2020
This is the second alpha release and inlcudes a number of new features as well as updates to existing components and many bug fixes.
The following is an overview of changes found in this release:
-
Group tool improvements and additions
- Regroup removes selected objects from various groups and puts objects in new group in one step
- Works at the sub-object (island) level to split apart individual objects
- The ungroup function also now allows splitting islands of the same mesh
-
Physics tool improvements and additions
- Single button to enable/disable physics per object group
- New reset physics button returns all dynamic objects to their initial position
- New mass/density option allows some control over object mass.
- Resulting mass (based on weight setting and object volume) is displayed in panel next to object
-
SteamVR input improvements
- Use SteamVR action system, which allows users to customize device input mappings how they like
- Simplified thumstick locomotion. Thumbstick now behaves the same in both hands and translates only (no rotation)
- New touchpad segments to select touchpad buttons, makes working with touchpad icon buttons more predictable especially with flakey touchpads.
- Improvements to right-hand tool selector
- Support for directly wiring between scalar and boolean parameters. A value of false maps to the bottom of the wire value range and a value of true maps to the top. The new range mapper object can also be used to easily remap the range.
-
Scalar parameter panel improvements
- units for distance, angles, time, force, etc.
- snap values to various increments
- adjust parameter value via touchpad
- Force gizmo object now generates a force proportional to the size of the gizmo. So it is possible to affect the force amount by scaling the gizmo. Can also now generate a negative force (opposite direction).
-
Thing emitter improvements
- new gizmos for source and emitter that provide better control over source volume
- removed emission rate and now just emit on trigger value
- new parameters for rotational velocity
- improved performance emitting complex objects
- dynamnic preview object at emitter to preview source
-
Play mode changes and improvements
- improved climbing with more intuitive rotation when gripping with two hands
- can grip animated objects to "ride along" with them as they move
- full hand model with animated fingers and support for Valve Index
-
Transporter object changes and improvements
- can now activate from edit mode for testing
- faster transition time when teleporting
- spawn point option to define scene entry point
- Environment object changes and improvements
- new gradient option for alternative to sky shader with control over gradient colors
- new fog option to add atmosphere to scene
- new ground plane option to show/hide ground plane grid
- Scene lobby changes and improvements
- new simplified open-space environment
- delete/clone functions now accessed via touchpad commands
- tutorial now starts in scene lobby and includes some scene lobby functions
- delete scene timer to prevent accidental deletes
- deleted scenes now copied to deleted scenes folder where they can be recovered
- default cube texture for newly created scenes
- Portal Camera - use a Vive tracker to track the view position of a person IRL and a portal camera gizmo in the scene to create a portal type effect. A monitor or projector displays the portal camera view, which has an off-axis view frustrum based at the tracked viewer position. There are UI controls for this in the desktop window.
-
performance improvements
- several aspects of the import process have been optimized to reduce lag
- scene snapshots (used to implement undo/redo) have been optimized to reduce lag
- aspects of the weld and explode functions have been optimized to reduce lag
- New kiosk mode for operating the Thingamajig application in pure play mode
- New camera gizmo with category ID parameter to control which monitor views the camera
- New monitor object with category ID parameter to select camera to view.
- Support for 360 degree video including both mono and stereoscopic.
- New light object gizmo with an adjustable cone and omnidirectional option
- New range mapper object
- New accumulator object
- New collision detector object
- New destroy gizmo object
- New anti-gravity object
- New hand grip object
- New timer object
- New birth detector object
- New switch joint
- New snap socket object
- New wave generator gizmo noise functions
- Mallot buttons can now also be activated by controller trigger button when focused
- Proximity sensor object now has option to trigger by player
Alpha Release 1
June 20, 2019
Welcome to the Thingamajig private alpha release!
The purpose of this release is to allow a small number of people to begin using the software and provide feedback. We intend to grow the number of people testing the software over time culminating in a public beta release.
Thingamajig is still very much a work-in-progress and is not yet feature-complete. We also anticipate changes to current features. And of course there are plenty of bugs and defects at this early stage.
We will make some effort to maintain backward compatibility for Thingamajig scenes during this early development phase, but make no guarantees. It is possible that as features change or are added or removed, scene files may become invalid or change in appearance or function.
The Thingamajig alpha release (and updates as we release them) can be accessed from the Steam store. Use the key (sent to you in a private Discord direct message) to add Thingamajig to your Steam library. From the Steam store top level “Games” menu, choose “Redeem a Steam Wallet Code…” and follow the instructions from there.
Note that there is a beta channel for Thingamajig builds, but this is not recommended since these are untested development builds. If Thingamajig appears in your Steam library as “Thingamajig [beta]” we recommend switching back to the main channel (Thingamajig properties, “BETAS” tab choose: “NONE - Opt out of all beta programs”).
There is a brief and incomplete tutorial system built into the Thingamajig application (choose “tutorial” from floating title at start), which we plan to extend and improve before the final release. We are also providing some basic online documentation to help get you started and acquainted with the application, which can be found here: https://thingamajigvr.com/docs
The discord server will act as the hub for comments, questions, bug reports, or really any thoughts or ideas related to the Thingamajig release. We will make every effort to respond in a timely manner, but we are a small team and appreciate your patience. Your feedback is very much appreciated!
In particular, we’d love to hear about:
- Questions about how to use particular features of the software
- Parts of the software you find confusing or hard/awkward to operate
- Defects where the software doesn’t operate as expected
- Ideas or suggestions for new features or changes to existing features
- Features or parts of the software that you like and why you like them
Please post your comments directly to the discord channel. If you are reporting a bug, be sure to include a description of the bug and steps to reproduce it.
Your time is valuable and we appreciate any effort you put into using our software. Thank You!