Source Directivity in Steam Audio

12 กรกฎาคม - lakulish
One of the new features introduced in Steam Audio 2.0-beta.14 is source directivity. In the real world, sources emit sounds with different intensities in different directions. For example, when a person is speaking, their speech is louder in front of them than behind them. Source directivity is a way of modeling this phenomenon in virtual worlds.

Directivity affects reflections
Usually, source directivity only affects sound traveling in a straight line from the source to the listener. In Steam Audio, every individual reflection of sound is affected by source directivity, opening up new opportunities for designers. For example, the below video shows a rotating source with a cardioid directivity. When the source emits sound into the reverberant room, reverb can be heard at the listener position; when the source emits sound away from the reverberant room, almost no reverb is heard.

How does directivity work?
A source directivity pattern specifies a scaling factor to be applied to sound as a function of direction relative to the source's coordinate system. The default directivity pattern in Steam Audio is a weighted sum of an omnidirectional (monopole) pattern and a dipole pattern oriented along the source's z-axis (front/back axis). This directivity pattern is controlled by two numbers: the dipole weight, and the dipole power. The dipole weight determines how "dipole-like" the final directivity pattern is: setting this to 0 gives an omnidirectional pattern, setting this to 1 gives a pure dipole pattern, and setting this to 0.5 gives a front-facing cardioid pattern. The dipole power determines how "sharp" or "focused" the dipole is.

Using directivity in Steam Audio

Unity Plugin
To use source directivity in the Unity plugin, first attach a Steam Audio Source component to the Audio Source you want to specify a directivity pattern for. Next, use the Dipole Weight and Dipole Power sliders to specify the directivity pattern; the visualization will update in the Inspector tab and in the Scene tab as you adjust the sliders.

In the C API, directivity patterns are specified using the IPLDirectivity struct, an instance of which is contained in the IPLSource struct. The IPLSource struct, in turn, is passed to the iplGetDirectSoundPath function (when simulating direct sound), and the iplSetDryAudioForConvolutionEffect function (when simulating indirect sound). Use the dipoleWeight and dipolePower member variables of the IPLDirectivity struct to specify a directivity pattern.

Arbitrary Directivity Patterns
When using the C API, you can specify any arbitrary directivity pattern using a callback function: set the callback and userData member variables of the IPLDirectivity struct to use this functionality. The specified callback will be called by Steam Audio whenever it needs to evaluate a directivity pattern. Refer to the C API documentation for more details.

Logitech G POWERPLAY and SteamVR Tracking

25 มิถุนายน - VDubs
We’ve been looking into reports of SteamVR Tracking interference while using the Logitech G POWERPLAY mousepad and have confirmed that there is an issue. Logitech G is currently working on a firmware update, and Valve is working with the folks at Logitech G and HTC to find the best long term solution. Until then, please unplug the USB cable from the POWERPLAY mousepad and plug your mouse in directly before using VR.

We’ve tested a variety of other wireless power systems and have not found any similar issues. That said, if you believe you’ve found a device that does cause interference, please let us know.

SteamVR Home: New Collectibles

21 มิถุนายน - Lawrence
It's that time again! New SteamVR Home collectibles are now available for Moss, Apex Construct, Nevrosa: Escape, and Trains VR. As always, play these games to unlock their collectibles in SteamVR Home.

Vive users now have access to the Vive Pro headset avatar, and we also have a special guest in SteamVR Home: a Steam Summer Salien!

Introducing SteamVR Skeletal Input

21 มิถุนายน - Victim0

In May we announced the new SteamVR Input system to allow developers to more easily support existing and future controllers, enable gamers to more easily customize their controls, and empower hardware makers to continue to innovate on VR input. But there’s another aspect to controller input unique to VR that we did not address at the time: extra information from the controller about what the player’s body is doing. Current hardware can tell us a lot about where the user’s hand is and the pose of their fingers, and that information is only going to get more accurate and detailed as the industry continues to innovate. To facilitate this innovation, we’re proud to announce the release of the first beta of SteamVR Skeletal Input.

The Skeletal Input system will allow controller makers to capture the pose of the user’s hand as accurately as their sensors are able, and provide it as a stream of animation data to the running app. App developers can then use this stream to animate the hands of the user’s avatar on its own or in combination with their own animations.

What this means for users is that they will be able to get the full benefit of their investment in new VR controllers in their favorite games without the need for the developers to release a patch to support the new controller. App developers will not need to create unique animations for each controller they intend to support when their game is released, or issue patches to support new controllers. And hardware makers can continue to innovate in this space, and write their drivers so that their controller will work with any game that supports the new Skeletal Input system.

Controller drivers will be able to provide two animation streams to apps for each controller: one stream intended to track the estimated pose of the user’s hand as accurately as possible, usually meaning with the controller in-hand. The second stream is intended to provide a range of motion for the hand as if it was no controller in the way, ideal for cases where the user’s avatar is not currently holding anything in-game. The app developer can then choose which of these streams to sample based on the current context of the game.

SteamVR Skeletal Input will also provide the option to convert either data stream to additive animation. Additive animation can be useful to app developers because it can be layered on top of other animation to provide additional, more dynamic motion. For example, you could use the additive finger animation from SteamVR Skeletal Input as a layer on top of an artist-created pose of the hand holding an object, to allow users to appear to adjust their grip or gesture while holding an object.

We also wanted to ensure that multiuser experiences would be able to take advantage of this new system, but networking an entire animated hand skeleton can require too much bandwidth for many users. So we have included as part of the API support for compressing the animation down to a size that is more practical for networking.

This initial beta release is intended as an opportunity for developers to try out the API in their games and provide us with feedback. Vive Wands, Oculus Touch, and the new Knuckles EV2 are already supported, and we invite other input makers to work with us to add support for their controllers during the beta as well.

A full SDK for all developers will be released soon, but for now Unity developers can access the Skeletal Input API with this early release of the SteamVR Unity plugin. The documentation is available on the OpenVR GitHub Wiki. We look forward to hearing your feedback!

HTC Vive Wands

Oculus Touch Controllers

Knuckles EV2

SteamVR Home: Steam and Desktop Panels

12 มิถุนายน - Lawrence

Today we are excited to introduce two new spawnable panels to SteamVR Home: Steam Big Picture and Desktop. These are the same overlays that are accessible from the SteamVR Dashboard, but with the convenience of placing and saving them in your SteamVR Home environment.

Both of these panels are accessible under Things > Panels in the content browser. Simply click to spawn, then reach out and grab the panel to adjust its location and position.

This feature is currently only available in the SteamVR Beta. To opt into SteamVR Beta, find SteamVR under Tools in your Steam Library. Right click to bring up Properties, then select 'beta' from the dropdown in the Betas tab.

As always, we'd love to hear what you think in the discussion boards.
Controllers Controllers Controllers: Introducing SteamVR Input
Upcoming Windows Mixed Reality Support on Steam
ฮาร์ดแวร์ Steam