https://drive.google.com/file/d/1ifKsYqkI75xXu-xUEJ3dGjnU6d1m-zGV/view ## Summary This video is a tutorial on how to enable OVR (olfactory/scent) functionality in an Unreal Engine project using the OVR Unreal Plugin. The tutorial demonstrates: 1. **Project Setup**: Creating a C++ first-person template project and adding the OVR plugin to a "Plugins" folder in the project root 2. **Adding Olfactory Detection**: Adding an "Olfactory Epithelium" component to the first-person character blueprint, which acts like an audio listener but for scents 3. **Creating Odor Sources**: Setting up odor assets (citrus, earthy, floral, fresh, green) and creating blueprint actors with odorant components 4. **Configuring Attenuation**: Setting up sphere-based attenuation for odor intensity, similar to audio falloff 5. **Testing**: Using debug logging and CoolTerm to verify the system is sending commands to the hardware device 6. **Connection Manager**: Adding the BP_OVR_Connection_Manager blueprint and configuring Bluetooth connection code in the character's begin play event The tutorial shows how to integrate scent hardware into Unreal Engine for creating multisensory experiences. --- ## Full Transcript **0:01** - Hello and welcome to the intro tutorial for how to syn enable your Unreal Engine **0:07** - project. Just work with I guess the first person template for this intro and **0:12** - how to syn enable it. Go ahead and make it a C++ project. And here we have our **0:18** - firsterson map from the template we just started. Go to our content drawer. Right **0:24** - click on any folder here. Show in explorer. Then wherever you were, you **0:29** - want to make sure you go to the root of your project and rightclick, click new, **0:35** - and then folder and go ahead and type plugins with a capital P. That's where **0:40** - we're going to put our OVR plugin. And I drop it as a junction. That way, as I'm **0:46** - developing on this plugin, um, everything can point to the same source **0:50** - folder. allow us to enable OVR utilities which will actually show up as the **0:55** - architecture of syn or AOS plugin. Go back to plugins and you can type in OVR **1:03** - and you'll see by default now we have the OVR AOS plugin enabled. **1:13** - Now let's syn enable. Um there's a couple different ways we can start. I **1:19** - suppose we'll start checking out the pawn in this template or the pawn in **1:23** - your project. For the first person, it's this BP first person character. So, **1:28** - we'll go ahead and open that up. And here is the first person character. **1:36** - So, we'll go ahead and click add here and we'll search for factory epithelium. **1:43** - If we click here, that will add. Type in olfactory and **1:48** - then bam, olfactory epithelium is added. This will pretty much act as the **1:55** - listener if you're familiar with an audio perspective, which is usually on **2:00** - the camera. You know, drop the nose onto the camera so that it's a child of the **2:06** - firsterson camera. And we can go ahead and zero this out. And that's our nose. **2:13** - Uh, so that's what's going to do our smelling as the player moves through the **2:16** - world. Now, how about actually adding odor to our, in this case, game. So, **2:24** - inside our content folder, we'll go ahead and create a new folder. Right **2:29** - click, new folder. We'll call it odor sources. So, these are some odors that **2:34** - we have. We have the default here, citrus, earthy, floral, fresh, green. **2:40** - some custom ones that I've made. So, we can just take all of the core ones. **2:46** - We'll ignore the custom ones for now. And we can just drag them all and drop **2:52** - them. And just like that, we've added all of **2:56** - the odor assets. We can make use of them by applying them to an odorant **3:03** - component. I'll go ahead and go into content and **3:07** - I'll make a new folder and I'll call it BP **3:11** - odor sources. In this folder, I'll rightclick and create a new blueprint **3:16** - actor actor. We'll call this BP floral test. We'll open up BP floral test. **3:22** - We'll add a sphere component to it so that we can visualize it. So, all I did **3:27** - was click add and then typed in odor to see the odorant component. And now on **3:33** - the odorant component, you'll see that we have an override attenuation and we **3:38** - also have an attenuation settings. So this is a similar way to precreate an **3:43** - odor attinuation file that you can apply to multiple odorant components rather **3:48** - than configuring it over and over again on the same odorant. You'll notice that **3:53** - we got a default sphere here. Make sure enable intensity attinuation is on. **3:57** - Attinuation shape sphere capsule box and cone. We'll go ahead and go with the **4:03** - default of linear and sphere. And we'll make the inner radius match just about **4:09** - the size of that sphere. And we'll leave the fall-off distance uh to max. So **4:15** - basically, just like in audio, once you enter the blue zone, you start to smell **4:21** - and as you approach the gray zone, that will be max intensity. We need to assign **4:27** - it an odor asset. Go to the OVR essential odor asset. Click here and **4:34** - we'll assign this to be the floral scent that we're testing. Now we'll go back to **4:39** - our map. Go to our content drawer. Drag and drop our smelly actor into the **4:44** - world. Lift it up to visualize it a bit and position it just like so. When you **4:48** - click on it, you can see the visualization for the smelly space that **4:53** - we set up in the actor there. And now if we run it **5:00** - and approach it. Well, how do we know it's it's actually smelling? Well, if **5:04** - you've been following this tutorial with me and actually have the hardware, **5:08** - you'll be able to test it. But for now, to illustrate it, we'll go to the OVR **5:12** - connection manager. We'll scroll scroll down to the enable **5:17** - connection manager debug logging setting under OVR debugging. We'll tick that and **5:23** - we'll go to our output log here and we'll go to the top and select dock and **5:28** - layout. Do another clear here. Now, as we approach, **5:34** - you'll see we're filling up our log here with actual messages that would be sent **5:40** - to the device. To also illustrate that this is working, go to cool term here. **5:45** - We'll run uh device looks like it's connected. And now we can approach and **5:49** - you can see that this is the exact commands being received. **5:56** - And if we get out of the area, if we enter the area **6:01** - and then get out again, go to the content drawer and then **6:09** - plugins. Um, we look at OVROS content BP. There's **6:15** - a blueprint or BP OVR connection manager. This is essential to being able **6:21** - to actually perform connections. Another essential thing you'll have to do in **6:25** - order to make sure this all operates is configure the code to actually connect **6:32** - to the Bluetooth device. There's a couple places you could put this **6:36** - connection code. Uh you could put it in the begin play of any actor or the uh **6:44** - actual game mode, but we'll just choose the pawn since we have it here. On begin **6:49** - play, assuming there's a character in the world, which there should be, it **6:53** - will scan and when it finds an ion, it will connect to it. And that's it. Uh **6:58** - fundamentally sent enabling your project in the most basic way. Thank you. ---