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 andAction2
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