Simmetri - Amo
Simmetri in its current form is being sunset. While the app will still function as normal, no new updates are planned and the online support site will no longer function. Apologies for any inconvenience.

At its core, Simmetri was an experiment in trying to create a new interactive art tool. Sadly due its complexities and ambitious scope, the app became untenable especially given there was no clear defined business plan or larger base of users that could help sustain momentum. "If you build it, they will come" is NOT a business plan, thanks a lot weird whispering cornfield! 🤣



Thanks so much for the community support over the years! Simmetri lives on through a new product, PolypopLive. Catch you over there.

Cheers,
-Amo
Simmetri - Amo
New Interactive Tutorials
In this update, we are releasing 5 new interactive tutorials including 4 creative tutorials that teach about NodeEmitters and applying randomness to properties and 1 new scripting tutorial that dives deeper into scripting as presented through a game like experience. You can find them under the Creative and Interactive tutorial categories.




Scripting Improvements
To simplify scripting and object access, a new find() function has been introduced to make it easier to access member objects to better reflect what is shown in the property editor.



Additionally, you can now lookup all the script member functions/properties/events of any object in Simmetri via the object's 'Scripting Reference...' menu item.



These improvements are explained more in-depth in the new 'Intermediate Scripting' interactive tutorial.


Additional Features and Fixes
  • Can now access an object's name via the .name property
  • Added keyboard tooltips when dragging objects
  • Added 'new' symbol to represent un-played tutorials on UI
  • Constraint anchors now expose script functions to get parent constraint
  • Drag + dropping an object into script now defines the resulting variable as local
  • Fixed a bug in SpaceMap:findIntersectingNodes that could cause a crash if not all parameters were specified
  • removeEventListener() function now working for user made events
  • Changed the ordering of the basic tutorials
  • Fixed issue of no helpers being shown in library Lot/Unit edit space
  • Fixed tutorial speaking timing bug where phrases were sometimes being cut off too soon
  • Fixed tutorial bug where random phrases weren't being spoken
  • Now ViewPorts created along-side new OpenSpaces are not created with ExposureLayers by default and with a Bloom image filter group instead
  • Fixed issues getting jumped around sometimes when changing the cursor position in the Script Editor
  • Fixed issue with keyboard debug commands (F5,F9,F10, etc) occasionally not working correctly when the Script editor has the focus
  • Quieter background music for tutorials
  • Fixed CameraTriggering bug where it triggering was active even in stop time
  • Added a Bloom image filter
  • Fixed a scripting issue with blocking code (like infinite loops) written in global scope
  • Can now change the terrain's default diffuse color after any terrain created
  • Fixed horizon spaces not reflecting correctly in mirrors
  • Can now drag+drop targets onto the entire SampleRolloutControl (not just the clickable label)
  • Can now bake ambient light for arbitrary horizon spaces
  • Stability improvements
Simmetri - Amo
New Interactive Tutorials


One of Simmetri's primary goals has always been to get users to a place where they feel like they've created something interesting: the "wow I made that and it does something really cool" moment. This sense of accomplishment is something that veteran programmers experience all the time, but sadly can be elusive for a lot of non-technical people.

As part of our continuing effort to reach that goal, we are introducing 15 new interactive tutorials with this update. These tutorials cover a variety of important basics not covered in the original set as well as some creative concepts like creating classic music visualizations and maze building.

Give them a whirl and let us know if there's a topic you'd like to see tutorialized!

Changes to Object Position Reset on Stop
Prior to this update, when you pressed stop, all object positions made during playtime would reset to their original (pre-play) positions. In this update, only objects whose positions are changed dynamically at playtime (via physics/scripting/etc) will reset. This means that any position changes made by the user at playtime of non-dynamically animated objects will stay at their last position when stop is pressed.

Check out the new "Play, Stop, and Reset" tutorial for a better explanation of this.

Additional Features and Fixes
  • Reorganized interactive tutorial categories
  • Removed video tutorials
  • Improved tutorial system fixing some highlighting issues
  • Can now commit transform changes on the current view if nothing is selected to commit current view's position on stop
  • Added maze tools to the toolbox
  • Updated the drone/mini copter to be more stable
  • Changed opening sequence to not show the explorer panel on start
  • "Start here" indicator added on start to show new users where to access the explorer/tutorial list
  • Fixed Windows Mixed Reality issue that was causing Simmetri to start hidden/offscreen when the Windows Mixed Reality app was running
  • Fixed multi-monitor issues with non-standard setups
  • Fixed issue with documentation link not working when opening through the app
  • Updated OpenVR lib to the latest version
  • Stability improvements

Demo Now Available
A free demo is now available on Steam that let's you try the app before you buy it. The demo is limited in the following ways:
  • Shows cannot be exported to exe or shared to the Steam Workshop
  • Present mode is watermarked on all Display outputs
  • Demo has no access to the Steam Workshop

Ongoing Work
Simmetri's engine is currently be rewritten and ported to Vulkan for a larger push for multi-platform support. We'll keep you posted...
Simmetri - Amo
This update fixes a bunch of bugs and introduces a few new features.

Library Properties

You can now create properties inside a library. These properties can then be drag-and-dropped onto object properties to control multiple property changes from a single source property (either through the UI or via script). You can also keyframe or apply signals to the created properties to animate all assigned properties together.



Drag and dropping onto a property:



Physics Simulation Quality

A new property has been added under a Space's Physics property group that enables you to select a physics simulation quality. This allows you to control the number of sub-steps used to solve physics motions and collisions resulting in less error when using higher quality settings. Less error means constraints are more stable and collisions are more precise. Previously Simmetri was set to the equivalent of the "Medium" setting.



Framerate Selection

You can now select a framerate under the Preferences Panel / Graphics tab. Whereas before Simmetri defaulted to rendering as fast as possible, you can now limit the framerate to help control energy usage and system load. Framerate can either be "Unlimited" or set to a fraction of your screen's refresh rate (V-Sync). Defaults to V-Sync.



Additional Bug Fixes
  • Updated NDI SDK to 3.8
  • Fixed issues with Spout not working in certain texture share modes.
  • Exported app now compatible with Wallpaper Engine (use Player.exe as the wallpaper exe)
  • Now exports preview and readme files when exporting as apps
  • Now correctly renders using the aspect ratio for projected spot textures
  • Fixed sound playback bug that prevented some tutorials from playing their spoken text at times
  • Fixed issues with CharacterActor being twirled around by rolling spheres
  • FPS always shown in corner of screen while changing Graphics preferences.
Simmetri - Amo
In this update, we focused on making user generated content easier to share as well as updating the content browser with improved access to learning resources.

Improved Sharing



You can now easily upload your universes to the workshop and get a web-link you can send to other Simmetri users to quickly share your experiences or concepts. This panel is also where you can export your show as an application (EXE).

Here's an example share-link:
http://share.simmetri.com/?id=1581232189

Content Browser Changes



Learning resources including the interactive tutorials are now listed within the content browser under the tutorials tab. Here you can also access the experiences of the YouTube tutorial videos from our 30 days of Simmetri campaign.

Starting Points



Instead of File/New placing you into a default world with a blue sky and terrain, you will now be presented with a variety of starting points to choose from. We will be adding to the list as time goes on.

Accessing the Explore and Sharing panels

You can now access the Explore and Sharing panels via two new buttons at the top right of the main UI:



Other Bug Fixes
  • Added a new intro experience
  • Moved add-ons into a primary explore category
  • Added web hyperlinks to show descriptions
  • Added a link to our Discord server on the Explore overlay
  • Added a link to our YouTube channel on the Explore overlay
  • Created a Discord bot for the Simmetri discord channel for share-link embeds
  • Double-clicking a number with a decimal point now selects the whole number
  • Added 'About this Universe...' to the file menu to view its description
  • Added a link back to index in documentation pages
  • Recent Projects menu now filters out missing projects
  • Various performance and stability improvements
Simmetri - Amo
30 Days Of Simmetri: Learn How To Code And Create VR, Everyday

We're running live YouTube tutorials on learning to code and creating VR with Simmetri for the next 30 days! Join us at 1PM EST everyday at our Simmetri Live Stream YouTube page.


  • If you can't make the live stream, don't worry! All our live sessions and more can be found at our YouTube channel: 30 Days of Simmetri Video Playlist

  • Join us on our Discord channel to talk back with us. Here's our Discord invite link: Simmetri Discord Server Invite There you can ask us anything about Simmetri and we'll always answer.

Simmetri On The Live Stage

Simmetri was recently used to make a multi-user interactive escape-the-room puzzle that was projected onto a 44' dome. Participants needed to work together to solve the puzzle and save Boston from an alien attack. Here's a photo of the show:



If you're curious on how to do this, here's a support article that shows you how to set this up in Simmetri: Rendering To A Dome

Glowing Reviews

Steam user Oeozero's writes:
"The software is very well thought out and makes it easy to quickly create anything I can imagine. The ability to not only build objects but change the physics of the VR universe makes this software virtually endless in what can be created. "
Full Steam Review

Thanks so much Oeozero for the video review, you took it to the next level:
https://youtu.be/99e7OvA9V9s
Steam user PublicVRLab writes:
"As the lead creative designer at the Public VR Lab, I'm in a constant search for the next VR creation tool. Playing with Simmetri for the first time was a dream come true."
Full Steam Review

Steam user Pinckney Benedict writes:
"I'm a professor in the creative writing program of a large public university. I've long been on the hunt for a tool that would allow me and my students--almost none of us STEM types or coders--to make narrative art in VR (and in 2D). Simmetri is that tool."
Full Steam Review

Steam user []ALF writes:
"Simmetri interactive tutorials are probably the best i've ever walked through!"
Full Steam Review
Sep 24, 2018
Simmetri - Amo
In this update, we wanted to highlight some awesome user created content. You can find all of these experiences under the Featured section of the content explorer in Simmetri.

"Haunted Houses"
by Pinckney Benedict



This experience depicts a highly atmospheric journey. From the author:

A VR setting of the Henry Wadsworth Longfellow poem "Haunted Houses." Read by Professor Michael Humphries. Created for the Exterior/Interior design exposition at Southern Illinois University Carbondale.

Link to Workshop Item


Solar System Model
by reid



This experience shows a detailed solar system simulation. From the author:

A model of the solar system meant for conveying an overview of the Sun, planets, and asteroid belts. The rotations are roughly accurate, but due to space considerations, the orbits are not accurate. They are modeled as simple circles rather than the complex ellipsoids we actually observe. Also the orbit periods are not accurate for the same reasons. But to introduce the Solar System and its relationships, this can be a good place to start.

Link to Workshop Item


Awkward Dancer VR
by Amo



Time your movements to the beat and awkwardly dance your way into the crowd's heart!

This is an example of a full-game like experience complete with intro/menu space, a proper game mechanic, scoring system and polish around the presentation.

Link to Workshop Item


Twitter Split-Flap Display
by Amo



In this show, a Twitter search is run on a hashtag and an old-timey split-flap display is updated with the search results across different cross-faded camera angle cuts.

Link to Workshop Item


Big Bad Wolf Quality Assurance
by Amo



A mini interactive story that requires a mic for you to blow, blow, blowww the house down.

Link to Workshop Item


Intl Space Station Tour
by Max Simultaneous



A cool fly-through of a detailed model of the International Space Station by Matthew Albright [Google Poly].

Link to Workshop Item


Collision Music Box
by Amo



A simple little experience where different boxes produce different notes of a music box when they are struck by a moving object.

Link to Workshop Item
Simmetri - Amo
For this update, we focused on audio by adding support for external audio sources (microphones, line-in devices), generating audio from signals and implementing better audio visualization features for connecting audio data to properties in your universe.

Sampling External Audio Sources

A big feature introduced in this update is the ability to sample external recording devices, such as a microphone or line-in input, and bring in that audio as either a Sound in the space or for visualization purposes only. To do this, there's a new audio input object called the InputAudioStream. Once created in your library, you can drag-and-drop it into the space to create a Speaker that plays the audio or you can set it as the Source of an AudioSignal (like an AudioPeakSignal). You can bind an InputAudioStream to a specific recording device via the Edit Menu/Preferences/Inputs panel.

Here's an article that shows you how to use the InputAudioStream:
Sampling External Audio Sources

Audio Signal Generators

Another new feature is the ability to generate audio via Signals. For example, you can generate tones via a WaveformSignal. To do this, a new audio input called SignalAudioStream has been added. Once you create a SignalAudioStream, you can set a Signal in its properties then drag and drop it into the space to create a Speaker that outputs the signal's generated audio. Try different signals and wavelengths along with Reverb on the Speaker for interesting results.

Here's an article that shows how to work with SignalAudioStreams:
Make Some Noise: Generating Audio From Signals

Audio Peak Visualization

A new signal and pulse have been introduced to better sample audio for modulating parameters in the space. The AudioPeakSignal will generate a signal from the audio's peak data with a smooth drop-off. By connecting this signal to various properties in the space, you can easily pulse values to peaks in the audio. The AudioPeakPulse is similar to the signal, but can be used wherever pulses are required.

Here's an article on working with AudioPeakSignals:
Pulsing to Audio Peaks

Simplifying Audio Imports

Another big change made is the elimination of AudioStreams when importing audio data from files. Before, if you wanted to import a long audio file (e.g. a song), Simmetri advised you to import it as an AudioStream to ensure the data would efficiently be streamed. However, by doing so, you were restricted to the AudioStream's timeline syncing behavior when playing the audio in the space through a Speaker which might not always have been desirable.

Now, all audio is imported as AudioClips and how and when those AudioClips are played is determined through their Sound nodes. A Sound node now has an "Auto Play" property that can be used to set when (or if) a Sound is automatically played. One of the auto play options is "On Timeline", which emulates the prior functionality of an AudioStream. Other auto play modes introduced include "On Copy" (for node emitters that emit sounds), "On Proximity" (to play when the camera gets close to a sound) and other modes as well.

Note that now (unlike prior versions) a Sound node (created by drag and dropping an AudioClip into the space) will not play by default. An auto-play mode must be chosen to do so or the Sound needs to be played via script.

Other Additions And Bug Fixes
  • AudioSignals (like the AudioPeakSignal or AudioFreqencySignal) can now sample either the output mix or a particular AudioStream
  • AudioWaveformSignal and AudioFrequencySignal can now be sampled through space coordinates to build oscilliscopes and spectrum analyzers out of objects/nodes
  • Increased number of waveform samples for the AudioWaveformSignal
  • Sound looping property moved into AudioClip
  • Sound TransposePitch property now continuous
  • Fixed Reverb Decay Time not working
  • Added a new interactive tutorial for changing the GUI text size
  • Particle effects now inherit velocities of parent RigidBodies
  • A tooltip now appears when dragging a timeline event displaying its current time
  • Fixed bug where Add To Library was not updating the browser correctly
  • Performance and stability improvements
Simmetri - Amo
For this update, we’ve added a new tool for live performing: BPM (beats-per-minute) controls.

BPM Controls

You can now add BPM controls to your show to create a panel you can access at play time to control the BPM rate dynamically. When you tap a BPM rate using the controls, you effectively set the frequency of a special BPM Pulse that lives in your Universe that you can assign to properties and emitters to sync them to the beat. You can do this by dragging-and-dropping the BPM Pulse onto any numerical property.

You can find the ‘bpm controls’ tool under ‘live tools’ in the toolbox.



When you add the controls to the space, the controls will be created in an overlay ViewPort that is active regardless of what ViewPort you are in. Think of it as your control surface allowing you to interact with controls that only the performer sees in the case where you create a separate Display representing your output to the audience.

Since these controls live in your universe, you are free to change and edit them as you like. Additionally, since they are added as objects to your Universe, they will be included as part of your show when exporting it as an application.

Here’s an article that describes how to create and use the bpm controls:
BPM Controls

Other Additions And Bug Fixes
  • Fixed a bug where objects emitted on move by a rotation or scale transform widget, stayed in the space on stop
  • Made scrubbers easier to scrub by increasing their vertical hit area
  • Grabbable interactions now require objects with RigidBodies
  • Made Grip compatible with sounds, emitters and decal emitters
  • Made auto mode state more clear on bpm controls
  • Camera monitor tool now creates monitor for existing picked camera
  • 'track object' tool folded into 'look at' tool (under 'ui \ game')
Simmetri - Amo
Since launch, we’ve been busy listening to your feedback. For this first update pass, we focused on continuing to build out support for the live artist/VJ community. Here’s a rundown of the changes:

Rendering To Outside Applications

One of the larger changes made in this update is the decoupling of inputs/outputs (think multi-monitor output, Spout sharing, etc) from your Universe into the application Preferences panel. Here’s a rundown for why this change was made:

Before, when you wanted to output an in-world camera or screen to an external application or monitor, you needed to create a Display for the camera then, under the Display’s properties, add appropriate Display Outputs to send the Display’s rendered texture to external displays/applications. Adding them directly to the Display in this manner meant that the outputs were ‘baked’ into your show meaning they would need to exist exactly as defined even if opening the show on a different configuration/computer. Also, if you exported your show as an application, the application would require those same exact outputs to function properly, which is no good if you take your show on the road to venues with different display configurations, etc.

To address this problem, the Display outputs have been moved into Edit/Preferences/outputs meaning they are configured at play-time (in your exported app as well) under Preferences. You still need to create Displays in the Universe as these represent your Universe’s outputs. However, now you (or your end-users) bind and setup the actual output devices under Edit/Preferences.

Here’s an article that gives an overview and tutorial on how to work with the new system:
Rendering To and From Outside Applications

Rendering From Outside Applications

Similarly, like outputs, input texture bindings have also been decoupled from the Universe. Now, when you want your universe to receive shared texture data from an external app, you can create Input2DTextures (formerly Spout2DTextures) in your Universe and bind them in the ‘inputs’ tab under Edit menu/Preferences. If no input is explicitly defined, the Input2DTexture will connect to the first input it detects.

NewTek NDI Support

NDI support has now been added for both Inputs and Outputs meaning you can now share and receive NDI based video streams. Especially useful when sharing rendered output over networks.

Here’s an example of bringing your phone’s camera video stream into Simmetri:
Phone Video Cam into Simmetri: NDI

Grip Tool

The grip tool was added for cases where you, the performer, live manipulate a projected show/presentation to the audience while you direct things immersed in VR. To use it, you click a camera (or light/sound/emitter) in the space to add a grip object that can then be used at playtime to grab and move the camera using your VR hand laser.

Grips: Making Cameras Movable During a Performance

Pulse Controller

A new property controller has been added that allows us to alter the value of any numerical or boolean property when a pulse emits an event. You can have the value pulsed or shifted using a variety of animation curves.

Drag + Drop Automatic Pulse/Signal Controller Assignment

If we create a Pulse or Signal in our browser library, we can quickly assign it to modulate any numerical or boolean property by dragging and dropping the signal or pulse from the browser onto a property. After the drag-drop, there will be a new set of options listed under the property to control how the value is changed.

Animating With Pulses

Slide/Spin Animation Tools

Located under the ‘ui \ game’ tools of the toolbox, these allow you to quickly add a spin or slide animation to a selected object. These are cumulative as well, so you can add a bunch to an object for interesting results. These tools effectively automate adding signals to an object's transform. If the object has a movable rigid body, these tools will create motorized physical constraints instead so the spinning/sliding object will correctly interact with other movable physical objects (i.e. with RigidBodies).

Other Additions And Bug Fixes
  • Simmetri should now not close if you shut SteamVR down while in VR mode
  • Fixed issues preventing Simmetri from rendering through the GameBar to Mixer for video and broadcasting
  • Fixed flickering issues that sometimes could occur when using multiple screen display outputs
  • All Displays now have a built in DisplayTexture for quickly accessing the Display’s texture to apply to in-world materials.
  • Screen aspect ratio is now defined under the DisplayTexture’s properties
  • All texture thumbnails can now be dragged and dropped into the space to create a plane rendering the texture
  • Dome output now will always output as square aspect ratio without needing to explicitly set it
  • The script editor window will now hide itself when the Steam Overlay is shown
  • Ctrl+Tab now out-dents selected code (instead of Shift-Tab, which conflicted before with the default Steam Overlay shortcut)
  • Screen preferences (under the Preferences panel) have been now folded into the ‘graphics’ and ‘outputs’ preferences tabs
  • Fixed edit boxes from altering the value (in some cases) as you typed in them
  • Can now directly attach attributes to transform/vector components without having to add a splitter attribute
  • Fixed a bug where changing a default binding of a PlayerController would reset on stop
  • Added a menu item and keyboard shortcut (Ctrl+L) to lock/unlock selected objects
  • Can now add PlayerControllers directly to Spaces for defining global controls
  • Fixed issue where dragging and dropping a signal into the space was not setting itself as the rendering signal on the created SignalVisualizer
  • Input2DTexture thumbnails in the browser now update in real-time. Before they would only update when the browser panel was refreshed.
  • Now each ViewPort will have its own separately active PlayerNode if actively rendered through a display.
...

Search news
Archive
2025
Jul   Jun   May   Apr   Mar   Feb  
Jan  
Archives By Year
2025   2024   2023   2022   2021  
2020   2019   2018   2017   2016  
2015   2014   2013   2012   2011  
2010   2009   2008   2007   2006  
2005   2004   2003   2002