<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>InverseKinematics | Dencho</title><link>https://www.dencho.dev/tag/inversekinematics/</link><atom:link href="https://www.dencho.dev/tag/inversekinematics/index.xml" rel="self" type="application/rss+xml"/><description>InverseKinematics</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 16 Nov 2022 00:00:00 +0000</lastBuildDate><image><url>https://www.dencho.dev/media/icon_hu1b14c2ed69a2f89c06f5de8cc0bd5fd1_301795_512x512_fill_lanczos_center_3.png</url><title>InverseKinematics</title><link>https://www.dencho.dev/tag/inversekinematics/</link></image><item><title>Physics Based Procedural Animations [02]</title><link>https://www.dencho.dev/projects/experiments/2022/physicsbasedproceduralanimations02/</link><pubDate>Wed, 16 Nov 2022 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2022/physicsbasedproceduralanimations02/</guid><description>&lt;p>Calibrating the muscle joints on big Boss Character.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations02/XRLog_2022_917.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>This character is for a physics based combat system I cant exactly talk about due to an NDA.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations02/XRLog_2022_911.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>For calibration and debugging physics I setup quick disposable testbed logic that might look pretty weird out of context.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations02/XRLog_2022_913.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>When done right, this guy will struggle to move objects with heavier mass than others. This is what it looks like when moving all objects with the same mass.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations02/XRLog_2022_917.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>And this is why we calibrate.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations02/XRLog_2022_939.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Crypto Comedy Club</title><link>https://www.dencho.dev/projects/contracts/2022/cryptocomedyclub/</link><pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/contracts/2022/cryptocomedyclub/</guid><description>&lt;p>Contracted out by a small team with plans to launch a Comedy Club in the Metaverse tied to custom NFT metadata and the $LOL token.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_863_1.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus Quest 1/2&lt;/li>
&lt;li>Pico 2/3&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>VRoid SDK (Avatars)&lt;/li>
&lt;li>ReadyPlayerMe SDK (Avatars)&lt;/li>
&lt;li>OculusVR SDK&lt;/li>
&lt;li>UnityXR SDK&lt;/li>
&lt;li>PicoVR SDK&lt;/li>
&lt;/ul>
&lt;p>Due to an NDA im not legally allowed to show the NFT portion of this project.&lt;/p>
&lt;h4 id="the-blockchain">The BlockChain&lt;/h4>
&lt;p>Implementing the blockchain took some work, however at the time we got it working due to an SDK called Moralis that was coming out at the time. Token and NFT transactions were able to take place using the connected Web3 wallet.&lt;/p>
&lt;p>One of the main features is being able to hop into a theatre and watch a comedian perform a live or recorded session with your friends.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_857.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h4 id="physics-based-hand-tracked-posing">Physics Based Hand-Tracked Posing&lt;/h4>
&lt;p>One of the main problems with HandTracking is the immersion break a user experiences when they reach out to grab a virtual object. Usually the virtual hands that mimic the real world hands end up clipping through the object the user is grabbing. This is my attempt to fix that.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2021_856.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>During my time at CCC I prototyped procedural hand poses when grabbing things with pure hand tracking. Each fingers Inverse Kinematic system is programmed to bend until a collider is detected.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2021_858.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_859_1.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_859_2.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_859_3.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h4 id="working-with-readyplayerme-avatars">Working with ReadyPlayerMe Avatars&lt;/h4>
&lt;p>The final PlayerController looked something like this with a live RPM Avatar.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_864.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_863_1.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>With both Hand and Controller tracked interaction!&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_863_2.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>The UI eventually worked well enough.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_866.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Good enough to test out Peer2Peer Networking for the first time!&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_868.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>However there were some bugs involving Physics that didn't go well over the network.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2022_869.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h4 id="audience-taming">Audience Taming&lt;/h4>
&lt;p>Stress testing remote player count. Turns out even low quality avatars were such a big performance hit.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2021_846.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>So I just used voxelized avatars for the audience which solved the performance hit from a full house.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/CryptoComedyClub/XRLog_2021_848.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>XR Player Controller [05]</title><link>https://www.dencho.dev/projects/experiments/2021/xrplayercontroller05/</link><pubDate>Sat, 15 May 2021 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2021/xrplayercontroller05/</guid><description>&lt;p>Refining one of the first Prototypes to exist (in 2020) to contain a full body avatar and finger tracking.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_838.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus Quest 1/2&lt;/li>
&lt;li>Pico 2/3&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>VRoid SDK (Avatars)&lt;/li>
&lt;li>ReadyPlayerMe SDK (Avatars)&lt;/li>
&lt;li>OculusVR SDK&lt;/li>
&lt;li>UnityXR SDK&lt;/li>
&lt;li>PicoVR SDK&lt;/li>
&lt;/ul>
&lt;p>First thing I did this round, was fail hard at using Mechanim Animator to handle my Hand Posing. Turns out its just easier and more performant to man handle hand posing with pure C#.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_729.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Semi working legs. Check.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_823.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>You know I had to make sure everything worked with physics. Just incase.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_828.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_830.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_849.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="skeletal-mesh-orientation-mismatch-smom">Skeletal Mesh Orientation Mismatch (S.M.O.M.)&lt;/h2>
&lt;p>S.M.O.M. happens when one mesh skeletal bone structure has incompatible orientations with another set of bones, leading to misalignment when trying to animate or manipulate them consistently.&lt;/p>
&lt;p>You can expect to run into SMOM when using ReadyPlayerMe avatars for a full body rig.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_832.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>However, SMOM is easily defeated with the use of my custom Hand Mapper.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_840.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>The results, a full body XR controller that dynamically switches between hand and controller tracking. Not something you see often in 2021.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_836.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_838.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>And a simple voice plugin test to move the avatars facial blendshapes.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_842.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>During development, this gave me nightmares.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController05/XRLog_2021_844.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Physics Based Exo-Skeleton Arms</title><link>https://www.dencho.dev/projects/experiments/2020/physicsbasedexoskeletonarms/</link><pubDate>Tue, 28 Apr 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/physicsbasedexoskeletonarms/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedExoSkeletonArms/XRLog_2020_001.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>I believe VR can be a cheap and effective way to test out ideas. On day I wondered how fun it would be to give the user giant Exo Arms.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedExoSkeletonArms/XRLog_2020_005.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>This crude prototype gave me decent understanding one how it would feel for one arm anyway.&lt;/p></description></item><item><title>XR Player Controller [04]</title><link>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller04/</link><pubDate>Fri, 10 Apr 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller04/</guid><description>&lt;p>Refining one of the first Prototypes to exist (in 2020) to contain a full body avatar and finger tracking.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_340.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus CV1&lt;/li>
&lt;li>Oculus Quest 1&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>VRoid SDK (Avatars)&lt;/li>
&lt;li>OculusVR SDK&lt;/li>
&lt;li>UnityXR SDK&lt;/li>
&lt;/ul>
&lt;p>I was one of the first developers in the industry to achieve fullbody avatars working with finger tracking. Once you get past the hurdle of different bone orientations the rest is pretty simple, I was just a dev with just enough free time to actually do it.&lt;/p>
&lt;h2 id="skeletal-mesh-orientation-mismatch-smom">Skeletal Mesh Orientation Mismatch (S.M.O.M.)&lt;/h2>
&lt;p>S.M.O.M. happens when one mesh skeletal bone structure has incompatible orientations with another set of bones, leading to misalignment when trying to animate or manipulate them consistently. I am no longer afraid of SMOM and I am going to use one of the most common Avatars available to developers, Unity-Chan&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_337.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Using this formula here I was able to avoid this issue, however the custom tool I made requires a basic understanding of how Quaternions work.&lt;/p>
&lt;!--TODO: Show Math Formula and Code Snippet here-->
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_340.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Testing UI Ray Pointers with Finger Tracking.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_349.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_353.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_356.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_359.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_362.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>I wrote an algorithm that tracks and predicts the tracked hands position and velocity. My goal was to Handle the case of when Hands overlap causing hand tracking to be lost due to occlusion. This algorithm understands when the Hands become occluded and attempts to predict and move the hands relative to their original trajectory at the time of occlusion.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_367.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>You can see that since I am simply lerping the predicted target IK position of each hand, there is no teleporting going on when hand tracking resumes from being occluded.&lt;/p>
&lt;p>When Hand tracking quality becomes low, mapping of the fingers halt and then blend to the target orientations once tracking quality is high again.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_370.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Testing relations with Physics based Grabbables when a Button magically resets an objects transform.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_373.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>When this Physics button is pressed the Cubes Reset.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_376.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_379.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Nothing much to take from this other than knowing the rigidbody wont explode the Players rigidbody in some way.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_382.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_385.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_388.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>There were a few setup issues with the relative Rig height. Nothing I can't handle.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_343.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController04/XRLog_2020_346.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Physics Based Exo-Skeleton Arms</title><link>https://www.dencho.dev/projects/experiments/2020/physicsbasedlocomotion/</link><pubDate>Wed, 18 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/physicsbasedlocomotion/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedLocomotion/XRLog_2020_195.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>This was one of the most difficult prototypes for my skill level at the time. The prototype code would need to be refactored before I would attempt putting it into beta testing.&lt;/p>
&lt;p>Part of the math I needed to master was how 3D normals and reflections are calculated.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedLocomotion/XRLog_2020_180.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Yes its a Sphere for now, but keep in mind this prototype is using RigidBodies and a Velocity PID controller that I wrote to move the body via Physics.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedLocomotion/XRLog_2020_180.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Testing Variable Properties out.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedLocomotion/XRLog_2020_192.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Physics Based Buttons [02]</title><link>https://www.dencho.dev/projects/contracts/2020/xrphysicsbasedbuttons02/</link><pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/contracts/2020/xrphysicsbasedbuttons02/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons02/XRLog_2020_580.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Another contract to improve front-end buttons. NDA prevents me from showing the exact implementation of the new buttons but, I am allowed to show them off on my own Menu Prototype.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons02/XRLog_2020_583.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons02/XRLog_2020_587.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons02/XRLog_2020_590.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons02/XRLog_2020_593.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>XR Player Controller [03]</title><link>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller03/</link><pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller03/</guid><description>&lt;p>One of the earliest prototypes to exist at the time (2020) that I know of, to contain a full body avatar and finger tracking.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_201.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus CV1&lt;/li>
&lt;li>Oculus Quest 1&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>Vroid SDK (Avatars)&lt;/li>
&lt;li>Oculus VR SDK&lt;/li>
&lt;li>UnityXR SDK&lt;/li>
&lt;/ul>
&lt;p>I was one of the first developers in the industry to achieve fullbody avatars working with finger tracking. Once you get past the hurdle of different bone orientations the rest is pretty simple, I was just a dev with just enough free time to actually do it.&lt;/p>
&lt;h2 id="skeletal-mesh-orientation-mismatch-smom">Skeletal Mesh Orientation Mismatch (S.M.O.M.)&lt;/h2>
&lt;p>S.M.O.M. happens when one mesh skeletal bone structure has incompatible orientations with another set of bones, leading to misalignment when trying to animate or manipulate them consistently. It’s essential to ensure that both hand meshes follow the same bone orientation conventions to avoid issues during animation and rigging processes. However sometimes this cant be avoided when sourcing from different third parties, in this case I had trouble aligning VRoid Hand Skeleton to match with the Hand Skeleton from the OVR SDK used for hand tracking.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_050.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="bypassing-smom">Bypassing S.M.O.M.&lt;/h2>
&lt;p>When dealing with skeletal mesh orientation mismatches between two hand skeletons, you can use a transformation formula to align their orientations. This approach allows you to transfer the orientation from one hand to another, even if they initially have different orientations.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_198.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Using this formula here I was able to avoid this issue, however the custom tool I made requires a basic understanding of how Quaternions work.&lt;/p>
&lt;!--TODO: Show Math Formula and Code Snippet here-->
&lt;p>Using a Homemade VRoid Avatar, which uses a Universal Skeleton Armature. This is what happened when trying to sync up rotations from OVR custom hand skeleton to the VRoids hand.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_201.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Locomotion Testing&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_213.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Locomotion Jumping with Physics still needs work.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_216.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController03/XRLog_2020_222.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Physics Based Procedural Animations [01]</title><link>https://www.dencho.dev/projects/experiments/2020/physicsbasedproceduralanimations01/</link><pubDate>Tue, 18 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/physicsbasedproceduralanimations01/</guid><description>&lt;p>I love working on physics based animations.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_308.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>I love procedural animations, most system use Inverse Kinematics to accomplish this, as do my systems. However I wanted to take it to the next level and allow dynamic blending between Inverse Kinematics and Physics Simulations.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_311.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>This should allow my to play a Humanoid animation on the skeleton while still applying IK to the bones, and lerp between a "Live" and "Ragdoll" state for the characters physics body.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_314.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_317.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_320.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Its far from perfect and I still need to find a use case but, its still fun to look at.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_323.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_326.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedProceduralAnimations01/XRLog_2020_329.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>Physics Based Buttons [01]</title><link>https://www.dencho.dev/projects/contracts/2020/xrphysicsbasedbuttons01/</link><pubDate>Tue, 11 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/contracts/2020/xrphysicsbasedbuttons01/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons01/XRLog_2020_067.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Contract to improve front-end buttons. NDA prevents me from showing the finished prototype.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/PhysicsBasedButtons01/XRLog_2020_070.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>XR Player Controller [02]</title><link>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller02/</link><pubDate>Mon, 10 Feb 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller02/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_076.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus CV1&lt;/li>
&lt;li>Oculus Quest 1&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>Vroid SDK (Avatars)&lt;/li>
&lt;li>Oculus VR SDK&lt;/li>
&lt;li>UnityXR SDK&lt;/li>
&lt;/ul>
&lt;p>This was my second attempt at a XR Player Controller. My main goal here was to make sure I can modularize components while solidifying most of the prototype code.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_079.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>The Avatar was home made this time using a base Vroid from Vroid Studio and Decimating it in Blender for low poly testing.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_083.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>I wrote the Grabbable components you see here, in order to make it work with physics.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_086.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Held hand poses still need some work.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_092.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_095.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_098.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Testing some facial blendshapes out.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_073.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_113.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_144.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Jumping still needs work.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_052.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>HandTracking was a complete failure as different avatar rigs have skeleton bones that use a different axis orientation. So one can not simply match up rotations 1:1 unless all bones use the same orientation axis.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="media1" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController02/XRLog_2020_050.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item><item><title>XR Player Controller [01]</title><link>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller01/</link><pubDate>Fri, 10 Jan 2020 00:00:00 +0000</pubDate><guid>https://www.dencho.dev/projects/experiments/2020/xrplayercontroller01/</guid><description>&lt;div class="video_thing">
&lt;video muted autoplay="" name="media" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController01/XRLog_2020_003.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;h2 id="devices-tested">Devices tested:&lt;/h2>
&lt;ul>
&lt;li>Oculus CV1&lt;/li>
&lt;li>Oculus Quest 1&lt;/li>
&lt;/ul>
&lt;!-- Technologies Used -->
&lt;h2 id="technologies-used">Technologies used:&lt;/h2>
&lt;ul>
&lt;li>UMA2 (Avatars)&lt;/li>
&lt;li>Oculus VR SDK&lt;/li>
&lt;/ul>
&lt;p>This was my first attempt at a XR Player Controller. Starting small my goal was to just get each limb lined up with basic controller based Hand Poses working.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="handWaving" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController01/XRLog_2020_003.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Clothes Placements and RayPointers&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="rayPointers" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController01/XRLog_2020_007.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>My own Custom Grabbables and my try at 2 handed grabbing.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="twoHandedGrabbables" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController01/XRLog_2020_009.webm" type="video/mp4">&lt;/video>
&lt;/div>
&lt;p>Writing my own Locomotion was great practice. More work needed to be done on the jumping.&lt;/p>
&lt;div class="video_thing">
&lt;video muted autoplay="" name="locomotion" loop="">&lt;source src="https://raw.githack.com/Denchyaknow/GitSite_Dencho/Develop/assets/media/projects/XRPlayerController01/XRLog_2020_011.webm" type="video/mp4">&lt;/video>
&lt;/div></description></item></channel></rss>