Skip to content

Version History

v1.1.0

Release Date: 23. Oct. 2024

New Features

  • The player can 'Crouch' in Walk mode with Left Ctrl
    • Crouch factor and damping settings are available in Advanced Player Settings.
  • Recording and playback can be paused with P
  • Keyframes for the current frame are inserted when OmniStep ends, provided Blender's 'Auto-Keying' toggle is on. This is useful for manually setting walk/flythrough keys.
    (Note: new UserScripts demos include advanced functionality for manual keyframing.)
  • Q / E and Left/Right Gamepad Triggers are used for 'Roll' when 'Trackball Rotation' is active.
    • Up / Down movement in 'Fly' mode is additionally controlled with Left Ctrl and Space ('Crouch' / 'Jump').
    • Q / E still function as Up / Down in normal 'Fly' mode
  • 'Radial View Control' can be set to auto-center for gamepad inputs (found in 'Advanced Player Settings').
  • Blender's Status Bar displays the current frames per second.
  • Action keys support modifiers:
    • Action1 defaults to Left Mouse and Action2 to Left Alt + Left Mouse These settings can be customized in the Add-on Preferences.
  • Experimental support for cursor centering and hiding has been added. This feature helps prevent the cursor from leaving the window on multi-monitor setups. However, it may introduce slight lag and stutters, so it is off by default. It can be enabled in the Add-on Preferences.
  • Specific objects can be excluded from collisions using a custom boolean attribute named OStep.NoColl on the object.

Changes

  • E / Q default key mappings have been reversed to match the standard in major engines.
  • 'Jump' default mapping has been changed to the Space
  • 'Teleport' default mapping has been changed to the Z
  • Jump and crouch keys now also function as up/down controls in 'Fly' mode, in addition to E / Q
  • Trackball Auto Leveling now defaults to 0.0, as roll has been implemented.
  • Add-on preferences UI has been cleaned up.

Bugfixes

  • Stairs recognition has been improved:
    • Works much better with 3D scanned stairs that have uneven geometry.
    • Correctly recognizes stairs with bevels.
  • View locks are now restored correctly.
  • 'Fly Mode' friction can be set to 0.0.
  • Quaternion rotations no longer flip signs, providing several advantages:
    • Motion blur works without glitches.
    • Quaternion keyframes can be reduced without issues.
    • Note: Always use quaternions for camera animations; use Euler only for auto-keying single keyframes.
  • Old keyframes are removed much faster when restarting or starting a new recording.
  • Gamepad look rotation is now independent of framerate

Scripting API

  • The Scripting API includes several new and updated methods, which you can see in action on the new UserScripts Sample Page.
  • Although there are quite a few changes, the update is 99% backwards compatible. Most changes involve added or fixed features, and all the Examples have been updated to work with version v1.1.
  • Here is an overview of the new and updated methods/classes:
    # Data Class new Properties:
    data.input.mouse_move       # Vector (respects Input Smoothing)
    data.input.mouse_pos_raw    # Vector
    data.input.respawn          # bool
    data.player.fov             # float
    
    # Data Class Changes:
    data.player.root_mat        # Matrix now includes the player rotation around the Z-Axis
    
    
    # New Methods:
    self.player.align_root(self, normal, limit_deg=None)
    self.player.override_move_input(self, input_x=None, input_y=None, input_z=None)
    self.player.override_look_input(self, delta_pitch=None, delta_yaw=None, delta_roll=None)    
    self.player.set_fov(self, fov=None, seconds=None)
    
    self.util.insert_camera_keys(self, frame=None, mute_tracks=True)
    self.util.insert_camera_fov_key(self, mute=True)
    self.util.rotate_obj(self, obj, angle, axis, origin, space='global')
    self.util.get_shader_node(self, obj, node_name, material_name=None)
    self.util.clear_obj_animation(self, obj)
    self.util.get_children(self, obj, recursive=False)
    
    # Updated Methods:
    self.player.spawn(self, obj=None, set_active=True)
    
    self.scene.set_dynamic_collider(self, obj, full_evaluation=False, include_children=False, recursive=False)
    self.scene.remove_dynamic_collider(self, obj, include_children=False, recursive=False)
    
    self.util.duplicate_obj(self, obj, target_collection=None, deep_copy=False, include_children=False, recursive=False, clear_animation=False)
    self.util.delete_obj(self, obj, include_children=False, recursive=False)
    self.util.get_collection_objs(self, collection, type_filter=None, include_children=False, recursive=False)
    

v1.0.0

Release Date: 16. Sep. 2024

  • Initial Release