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