 Hey guys! Let's go Brazil! I got some cool stuff to share with you. Okay, let's share it. Alright, so I'm just gonna begin. Hi, my name is Khalil and I'm from a small company called Uba VR that I started a couple of months ago. It's been quite an exciting journey. And what we do at Uba VR is we actually do virtual reality for real estate. So for properties, for renovations, things like that. So there are seven areas which we have to pay a lot of close attention to which may be of interest to some of you guys as well. So just a little bit of background about me. I've been in game development for a number of years, about five years or so. I've worked on all kinds of titles, right? From VR titles to AR, web-based games, MMO games, stuff like that. So quite a wide range and it was a really small team of about ranging from five to eight of us. So I was able to pick up a lot of pieces along the way. I started out as a 3D artist and then I went out to technical art and then from there I picked up some development as well. So I kind of put it all together and that's how I started this company. So as you can see right, these are just some of the pieces of work just to give you an idea of the kind of stuff that I used to do, right? And it's all Unity. So I've been working with Unity for the past four or five years or so. And it's come a long way. And I think that for one of my key roles in my previous company and right now as well with Uber VR is to make things look pretty, right? Number one, and secondly, to make sure that it's optimized for every platform that you are pushing it out on, right? Especially there's so many things to consider when you're talking about VR. I mean, you have your PC-based HMDs, right? Which that one you need some serious horsepower to run. But even then, you can't go all out, right? So when you're using something like Unreal Engine, even you have to pull back and you have to pull back quite a bit to make sure that it's running at your 60 frames a second minimum, making sure that experience is not nauseating and things like that. So it's been really challenging. What we are trying to do is actually bring as photorealistic imagery because in real estate, that's a very, very important thing. From a lot of the feedback that we've gotten through the past couple of months, one of the key requirements for photorealism, right? A lot of other companies who sell VR for property and for real estate, they use 360 photos, 360 videos, right? But that, in a lot of people's mindsets, that's not really true VR because it's not a real interactive environment. You don't get to move around and interact with the environments. So these are just going to be a few short slides to show you how I progressed from the beginning to where we are at right now. I think there's still a way to go and just keep in mind that this is all all from mobile and we wanted to run as well on an iPhone and a new Android phone or maybe a three or four-year-old Android phone as well. So a lot of things have to be considered. I'm sure if you guys have any history with green mobile development, it can be quite challenging to get it running well on all platforms. So this is one of the first projects that we did. So what we started out doing is like small little renovation projects and then we helped the clients to visualize how their house is going to look like. So you can see right, I mean now that I look back on it, I can see that I had a very, my eye wasn't in tune with like photo-realistic imagery, being able to render, understanding how to render things realistically. Because later on I'll do a short demo here about unity like baking. I'm not sure if you guys have tried it. It can be a real pain, yes. And a lot of people stretch their heads. You go on to the unity forum, a lot of people have trouble with like baking and they keep changing things all the time. So that's another issue as well. But the problem here is that I try to light it like how I would light like a dungeon, like a video game, too much color. It's not really reflective of reality. So slowly as we went along, I started to do a little bit more study, started to put more time into rendering. And I think that that's one of my most key focus areas to make sure that the rendering is better and better. So as we go along, you can see it slowly, slowly gets right. So from here to here was like maybe one or two weeks. So you can start to see where the colors like start to come in. It's a bit more natural looking. But still it looks great video game. So you still don't get that reality. And this is another project. So you can see here it's coming a bit closer. So we met up with a lot of interesting people like the guys from Sportworks and everything. They are a rendering company and they are very interested in VR as well. And we took upon ourselves that challenger, not just from you guys, but a lot of people, they want to have VR. But in this space, they want it to be, they expect it to be like those professional renders, which, and if you tell someone, no, we can't do that, right? That's, they won't understand that, right? Because they come in from a business point of view, that I expect it to look this way. If it's not like that, then I'm not interested. And so being the person I am, I get very fixated on a problem, right? As I'm sure a lot of you guys are as well. You know, once we put our minds to that, right? Then it's like mostly, I haven't got home in like a month. I live in the office, I haven't slept in two days. And that's just the life chosen. But I think that in the past, yeah, in the past maybe like just a quarter of two months, able to come from like something like this, right? And this is like where we are now, right? Just give you an example. So this is the actual house. This is the photograph of the house. And it's like it's completed project, yeah? And this is what we actually delivered to the client, right? So that's, let's see if I can get this line up properly. Bahut, that gives you an idea, right? And I don't think that we are even there yet at that level, where like architects and real estate developers expect. But I think that as we keep going along, with, I think it's just a matter of like that problem solving, right? If you can figure out how to solve that problem, you can find a way to do it. Yeah, you have a lot of sleeveless nights and everything, but at the end of the day, it can be done, things can be done, right? So because of my background, working with shaders and all that, you know, start writing on modifying shaders, you know, there's ways to get things to look how you want it to look, yeah? It's just a matter of figuring out how to do it. So all these scenes, if you guys are interested later, you can try it out. We have, I think, a gear mirrored demo of this scene. So you can see whether it looks real enough. And I'll just go through a bit of my work process, because I won't be able to go through the whole shebang, but I'll start from an empty room. And you guys can just pick up some of the basic ideas like how I approach things. So this is a very, very simple scene, right? And I think even to get it to this point, a lot of people will struggle because of the approach involved. A lot of people, I mean, even for myself, we end up complicating the matter, putting in too many lies, messing around with things, but you realize it's not so difficult. It can be done, so I'm going to just load up this scene. Yeah, so this is how it all begins. It's not so clear on the screen, but basically that's how the scene should look with no lights, right? And a good way to handle things like this, or to handle lighting, right, is to take away all the textures in the scene, because a lot of time when we model things, when we import it to the engine, it really has all the texture information, right? The problem with that is that the textures tend to kind of mess with you because it's already got so much information and you tend to not get the lighting right. Right, so one of the approaches I take is that I always start with just wipe a plane, wipe texture, just to diffuse, right? And that's a couple of tricks I'll show you. But basically, I come in with, I just turn everything white, and then later on I'll start adding back my materials into the scene. But once you get this stage right, once you get it looking right at this point, you really want like 60% of the battle, then after that it's about managing your materials. But this is the most key thing, even if you get your materials right, if your lighting is off, that's it, your scene is not going to look right there. So even now, just like that, the screen is a bit dark. But there is already a lot going on. This is just a direction of light. This is just a direction of light. But what I did right, so I don't know where it's going. Normally I had to do a monitor, so let me just put the project. So this color over here, and the best friend or real enemy at this lighting cap. A good way to start lighting the scene right is you can turn everything off, like this direction of light. And then you can do like an initial, you can use a real-time GI to just do a quick date, at a very low resolution. These are all the default resolutions. And that should give you enough information to start working. This is a very good place to start. If you want to use light maps and light baking, I wouldn't recommend using the real-time GI or mobile. It's not a good idea. I've got it to work. I have another demo of that I can show you guys later. So I have real-time lights and shadows and a time of day changing on mobile. It works. Normally the shadows look really bad, but there are ways to get the shadows to look pretty good. But you have to take, you have to, then you can't, you have to pull back on other areas. So it's an interesting tech demo, but it's not practical. So at the end of the day, I think for mobile, a lot of the information was to be taken in that. So I'll just do a quick video. And that should be it. That's it. Now you can start to put in your lights. So now when you turn on your directional light, you already see some of the global illumination coming in. So I see if I change the color. I think it's not really reflecting what's showing up here, but probably if I increase everything. This is behaving very weirdly. Yeah, but really you get a sense of like, there is already global illumination going on, right? So depending on how you want to start lighting the scene, directional light is one way to do it. So that will be your son, right? Another way is to use a skybox, a HDR skybox. That's another good way to start making your scene. So now I'm just going to turn off the directional light. And these are some maps that I just downloaded from the Asset Store. Yeah, but these are just some free maps that I downloaded. You can use the information in the maps to start doing the baking already. So these few maps here are available on the Asset Store for free. You can just play around with it and you can try. And we'll just use the Change your ambient source to skybox. And there you can see, bring it up and see. So now that's the sky lighting the scene. Right now, you don't see so much color on the projector. But on my screen, you can see that there's the blue of the sky. So whatever information is there, it's like being casted onto the scene. So like, this is, so it's not so difficult to get to this point, right? As you can see, it's quite fast. But the next step is where it gets difficult. Where you start adding more lights, more information. You start messing around with like the bouncers and everything. And one of the biggest things that I would always strongly advise against, right? Is using the point lights. I don't generally like point lights and they don't really work very well with Actually, none of this works well with the real-time GI. But it tends to mess things up. Reason being is you always end up with all these hotspots. And I think for a long time, I myself was very, very guilty of using these point lights. Because you just throw them in and it just works. But you have very little control. And you end up having all these hotspots. It's not very effective. And then you try to balance it out by lowering the intensity. Then you put more lights, you load the intensity, you put more lights. And then you just have zero control. And you start to lose control of everything, right? So one of the tricks I've learned for myself, right? Is actually to create these light cubes. Or it's just a mesh, right? You can use any shape you want. You can use capsules are really good as well. Because they don't have the hard edges, right? So if you want to, okay, let's say now I want a bounce light, right? In this area over here. Because it's a bit dark, right? But now if I increase the general bounce boost, right? Then everything is going to go up. Then I kind of lose. Because let's say now I don't want, I like the way it's exposed on the outside. Because I don't want it to be overexposed. It's already overexposed on the outside. And I bring down my ambient. You shouldn't be going up so high. Okay, let's say I like the exposure here. But now inside it's very dark, right? If I increase the bounce boost and indirect intensity, right? Then everything else is going to go up. And if you don't want that up. So that's the other thing that I used to fall into as well. Everything just gets overexposed, right? So this is one of the tricks I've learned. To use this and just a standard shader with an emission. And then that's where you control. And actually it works with real-time GI as well. So I just show you how it works. So this is going to be like my bounce line. So actually you can control it because you can actually create a mesh for it. So whatever shape you want, whatever the light shape you need in your scene. You can model it out. And you can even have it like only emit from a certain surface, right? Because if let's say it's just a plane. You will not emit downwards. It's not a dual-sided object. So for this I just want a general light which I can control better than a point line. And the important thing is that you have to make this static object as well. So it has to be recognized as a static object. And then you will have to turn off the cast shadows and receive shadows. Because you don't want, because you'll be recognized as a regular object. And then now, so now if I adjust it, right, it's not going to affect the scene. What I need to do is I need to put in static and I rebuild my GI. And so now it's taking a bit more time. So yeah, but again the real-time GI, I don't know whether any of you guys have seen projects. So there you get something like that. And then from here, right, you can actually start to mess around with the emission values. So this is a very effective and simple way. So I think because it's a static object, right, when you do move it around or you re-scale it, you do need to redig the scene because it is recognized as a static object. And later on, you can just turn off the match renderer or you can turn off the object but the lighting should still remain as it is. So I started to use a lot of these in place of real, the actual unity light because of the amount of control it can provide. Because even in terms of the intensity, the way these emission objects work, right, it's all like HDR, right. So you actually input all the values. So it's like actual photographic values, which is actually more accurate in a physical sense. So, okay, so I know that one thing that pisses me off all the time is, you know, you always see all the nice unity promo videos and then they're, oh, I look damn cool. You know, you've got a physical base rendering and everything. But you know, you try and you try and apply it and it works on a real powerful PC. But you know, it's not practical to use in mobile. Definitely not. And it doesn't seem like there's any push to get those features running on mobile. So we've got to find our own ways to do things like this. And I tend to not even use standard shaders for most of my materials. So a lot of times I use all the legacy shaders because I find that for mobile, they work the best. Problem I have with standard shader, the standard shader, you know, I think the standard shader like this, right, yeah, it allows me to do cool stuff like this, right. And you have all these parameters that you can mess about with, right. Oh, it's good in a way. It's bad in a way, right. That way it's short. But the problem I have with the standard shader is that it never looks the same on like different platforms. So when you build on mobile and you try it on your phone, it always doesn't look like how it looks on the editor or if you build for PC. So that's, I don't find it reliable. So generally, all my materials I tend to use is, yeah, I like to use reflective materials like this. And then I create my own tube maps, right. So I've actually like worked out ways to do like pseudo real-time rendering, you know, so I have tube maps update to actually show the actual reflection based on where the camera is and things like that. So, but those are just things that you can work out. When you're doing rendering and you want things like reflection, you're seeing everything. You just find, let me see. Yeah, what, what's going on? So that belongs here, right. See, you see, but immediately when I put the floor tiles on right there, it messes up with my whole like netting area, right. Of course, now the colors are all wrong. So that's where now you adjust your materials to fit the scene, right. It shouldn't be the other way around. So I see I like that shade of blue, you know, and let's say now I have that blue cast. I can even bring in a little bit of sun. I can have this kind of, you know, so you have a bit of that. Of course, you already have the bounce there. But then it starts to look more realistic, right. It starts to look more organic. And if it looks realistic with a white texture, then you're pretty much good to go, right. So let's then look for places that it's a bit dark, right. There are more of these emission dudes here. But yeah, but these things have been very, very helpful. So for this one, yeah, I obviously don't want it to be so big. Maybe something like that. Can I repeat it? You kind of see the seed starting to come together. By the floor. So here is where you adjust things like that. How, see, so there is some kind of a correction going on. Sorry, my workflow is a little bit messy, right. Over the place sometimes. So obviously now, let's say this is like a reflective cabinet, right. Then my reflections are wrong. So yeah, so you see now, you get the reflections working on the totals and everything, yeah. Very simple shaders. So these are all, these all can be found in your legacy, right. Or reflective, right. Bomb and stuff like that. And I'll show you a quick trick. If you want to use Q-Map. So I know now with the standard shader, you get things like the reflective probes. You know, you can have the probes in different places and then the probes will interpolate and then you can see all the reflective surfaces changing and being accurate. But it only works with a standard shader. So that also, this is me offer. Right, so you've got to find your own way to do it now, right. So there's a little script I can share with you guys. Where all you need to do is create a point. Normally, I would just put that as a child on my camera. You set that. Please, if my camera is there, my camera is there, minus one. And then if I render from there, I should get an accurate Q-Map, which shows me the reflections properly of what's happening on the outside, right. So what I do is I use this screen. Yeah, so this is the script. Okay, here we go. So it's an editor screen, so I bring it up. You can, okay, so for this example, I just create a new Q-Map. So Q-Map is also now placed in legacy because you need that one easier anymore. What it requires is for this to be readable. I can set a resolution I want. And render from the position. So I will select that position which I define. And then now you can see that it's actually rendered. The Q-Map based on that point. So now if I apply the Q-Map to my object here, it should give me a relatively accurate result. So based on the camera, it will be pretty accurate. So you see that whatever on top there will appear below here. So now you have that Q-Map. You then adjust again how effective you want the surface to be. If you want a tint of color to it or whatever. Yeah, but generally that's how I build up my scenes. And so you can, like for what I do is I find ways to actually update the Q-Map at certain points during the, when you're running the application is being run. So it always gives accurate presentation of the reflection based on the camera position. So if I move the camera around, it won't look right. But it will always look right from this point of view. That's the idea. So that's actually, that's how simple my workflow is. And then from here start to apply things. And these are all very straightforward things. And it's actually a very simple scene. But with like effective lighting, you can actually make it look pretty good. So once you have your base, let's say I'm happy with this now. I'm not too happy, but okay. And then from here then you can start to add all the smaller lights in the scene. So then you can use your typical spotlight. Are still not great, but they get the job done. So actually with the real time global illumination, it's very easy for you to set up the scene. Once you have the scene set up, that's when you'll turn that off. You turn on big GI and then you build. Once you come to this stage, then you'll face a lot more problems as well. Because another set of settings that you have to deal with, you know, things like ambient equipment and everything. But at least you know that if anything goes wrong, it's not your light set up. Because if you really set it up over here, you know, it looks as right as it should look very good. If you guys are interested, then I can go into the big GI part and give you guys a bit of info as well. If you guys have time, you know. So yeah, yeah, some time. Three more just to try if you have a demo. Yeah, here we are. Yeah, I do have a demo. So later on after I'm done, you guys can come around and give it a try. Yeah, so I have it running on here we are on Google Cloudbot. Yeah, here we are on each device. I'm using the S7H. It's the most powerful. Yeah, most powerful one. Yeah, but uh... For the base textures, what should I do with this? What resolution are you using? So for the big ones, right, I found that to be honest, right, actually even 2048 is fine. As long as it doesn't go beyond like, I mean if you end up with like 20, 2048, then you have a problem, right. One of the things I don't like about Unity and I've stopped doing it, I used to be very lazy. I used to, you know, when you import your model, I'm sure a lot of you do this as well. When you import your model, you just click generate line map information, right over here. Automatically generate. Generate the line map UVs, right. And that's actually a very bad practice because Unity never ever does a good job at generating the line maps. You are kind of leaving things to fate and then what happens a lot of times, right, is that you have a lot of line maps and then you have a lot of unused spacing, right. If you look at, let's see if I have any line maps here. Yeah, so if you take a look at like this line map, right, this is something that Unity has generated, right. All right, this is a terrible line map because there's so much wasted space all around here, right. And it ends up generating for a small scene like this many line maps, right. You don't need that many line maps, right. It's terrible. You see all this empty space here, that's, yeah. So that's what ends up happening when you use the automatic line map generation. So for me, I used to always just do this because I couldn't bother it. But now I actually go into my, to whatever 3D software you use, like Max or Maya or whatever it is and I'll unwrap the second UV map, right. So you can decide how the line maps should be played, right. So that's the best practice. And also you reduce problems, like, you know, sometimes you have those light bleeds, like in the corner sometimes, you see like light bleeding from outside and things like that, funny artifacts. So when you do the unwrapping yourself, generally you avoid a lot of these problems and you can actually plan the space better because let's say I have a large surface, right, like, let's say for this scene, right, I have a large surface like the walls, the ceilings, the floors, I want to give a lot of priority to that. But how unity does it? It just looks at all the space, right. And then it's going to dedicate a lot of light map space to all these areas outside, which nobody's going to see. Right, so that's a huge waste of light mapping motivation as well. So when you are unwrapping it in your own software and deciding exactly how to unwrap it, you can actually just, for me, I normally just have to, I just put a small little tiny space. If I know that people are not going to see that, I'll just, here I have a small little space here for all the outside areas, yeah. You can actually do that in Unity. So they do have, for Object, you can actually modify the scale, right. This does have some time. And actually, there's a lot of important features here that I think a lot of people overlook as well. So I spent over the past few months married to this and I've had to go in and just try out everything, right. And the thing is the documentation is a bit shitty. So it's a lot of trial and error. So scale and light map, that makes a big difference as well. So non-important things, you can really scale it down. Sometimes I want to create like a certain effect, like let's say I want to shadow in my scene, right. So I could create like a huge plane on the outside, but I don't want that to pick up any light map space. So I'll just put it at like scale at zero. So it's still considered as a static object that is affected by the engine, but it doesn't take up your light mapping space. So this is very important, scale and light map. So you can give a priority to certain things and also important GIR. But honestly, I don't really find that this does much. It's more of a scale over here, right. Very important, right. Another important thing is, right. So you can preserve UDs, right. So if you do unwrap it, then you want to preserve your UD maps, right. And if you don't, what Unity does, right. Even if you unwrap your own maps, right. And I think that this feature is still bugged at the moment. I think a lot of people are complaining about it, where Unity will still go and do some, they'll still mess around with your UDs, which is very, very annoying. So hopefully they'll sort that out. And in old versions of Unity, I think Unity 4, you could actually use light maps from other sources, but it's very hard in Unity 5, because of the way they index the light maps. It's very messy, yeah. There are some tools on the Asset Store that can actually help you with a lot of these issues, but yeah, that one's going to explode itself. So let's say now, I'm very happy with my light mapping over here, right, to look all the lights. And right now I can't even guarantee like how many light maps it's going to end up. It all depends on like all your big resolution and padding and all this. So let's just give it a try. So I'll turn off my pre-computed DI, make sure all my lights are set to bake. All right, that's fine. So I cannot light. So this will bake as well. Yeah, and then I'll rebake. Cool thing now, right, actually with Unity 5 that I found out is that you can actually do mix. So you can actually have Realtime GI with your directional light. So that means your sun is Realtime. So that means it's casting dynamic shadows. But the rest of the scene can actually be baked information. Yeah, so that's actually quite interesting. I'll show you, I'll show you a little demo. Like I was, I think I mentioned about the Realtime lighting on mobile. Yeah, so that's maybe I'll show a bit of that as well. Yeah, so there you go. So that's with it baked up, right. With the baked GI. So now you have your proper light map. Okay, so that's not too bad. I've got two light maps. And this scene would be pretty optimized for mobile if I ran it on the phone. I would probably not have any issues running it. Yeah, so that's basically an introduction to my workflow. If you guys are interested later, you can come and ask me questions. I'll just show you guys what I was thinking about. And this is what you have to see. Yeah, so this scene actually has both light map information and Realtime. All right, I think so. Okay, I'm not used to working with one monitor all over the place. Thing is, I need to, a lot of times I'll close it, then I'll need the light map, the lighting tab if you want. Okay, there's no, so this is something that I managed to get running more by this case. It's a bit dark on the screen here. Let's see if I can just, that's probably as far as it will go. Right, so it's on. You can take a look on the Samsung GLBR how it actually looks. I think the guys behind me probably have a better view over here. You can see how it actually looks. It doesn't look this dark. Yeah, but you guys, they don't can do that trend. So it works quite well, quite stable on mobile. So I think for certain use cases right, it can be quite effective lighting it this way. So later on when you give a try, you'll realize that one of the problems, the shadows flickering. When if you guys have ever tried to do shadows on mobile, you'll find that the Realtime shadows always gives you problems. So that's where you go to Asset Store for answers. So that's basically my workflow. I hope you guys have picked up something and you guys can change the way you look at lighting in Unity. It's not that bad. It's bad, but it's not bad. You can work around it. So I guess as long as you see it as a challenge to yourself, right, you can actually do a lot of things with it. If you do the right, if you just patience is one thing. Okay, another thing that I wanted to highlight is that always make sure that your scale is right. If you model in the wrong scale, okay basically I found out that Unity is the new lighting engine, the new light baking engine in Beast or whatever it's called. And Lighten. The old one was Beast, Unity 4. So with Unity 4, I don't think it was photon based. So meaning that regardless of the scale, it didn't affect the time of render. But with Unity 5, if you have a huge scene, that's why a lot of people complain about lighting with terrains because terrains are so huge. And you try to light a scene which is like kilometers. And it tries to do it physically. Then it takes like three or four days. And the result looks shitty anyway. So one way to get around it is actually to rescale everything down. I've done this before with one of my projects because we had a whole big city scene. And so it was actually modeled to physical scale. So it was like maybe hundreds of meters wide. And it was taking ridiculous amounts of time to bake. What's going on? So then by messing around with the scale, by giving like a 0.001 import scale, then suddenly the render time is at 10 minutes. But then you have to adjust all the lights to not be so bright as well. So it's all like balance. So that's a trick. If let's say you are finding that your render times are taking too long and if your scene is large, try to reduce the scale. You bake and then you go back to the scale one. So that's one of the tricks I use. Why is it so big? Sorry? No, it's why it's so big. No, I don't think SSD will help. I already use it. My computer is SSD and it still takes a long time. So it's mostly just a rendering. And scale. So when you do model stuff, I think it's very easy to forget to do in scale. Unity works on metric, I think, meters. So every one unit in Unity is one meter. So when you do your modeling, if you do it in inches or whatever, it's always good to just set. You can set like in 3D Max. I will set my system units to meter and I'll model in whatever units. You can have the display units as another scale. So that means that all the information that goes into Unity will be accurate. So when you do the baking and you do the setup, it's always accurate. So I think at the last VR event, what was it? Wednesday? Yeah, there was a team and then they were working on a really cool game where it's like this Sona thing or it's like a horror game. And they were saying that they were having a lot of problems in VR, especially with scale where things look weird. Because you have the depth perception. And if it looks like you're standing too low or too high, I think scale is weird, then the whole experience will be wrong. And because it's so physically accurate, we always have to be very mindful to model as accurately as possible to real world. Which is very hard. I'm not a very disciplined modeler. I don't really just need to go, but I think it's a good trait to have to be very disciplined in how you do a model. So those are the tips that I would give to them. Any questions? So I noticed the first example you gave was actually a rather small room. Yeah. I run into so many problems with black spots in small rooms. Yeah, so at that point what you do is you delete all your lights and you start from scratch. No, really, really. Because what happens is that I mean you saw how quickly I set up because I've really got my system in place, right? I understand what's going on. But sometimes all your settings get screwed up. And then you spend like two or three times more trying to fix the problem than if you started out from scratch. So what I normally do is I'll just copy the models and I'll start a new scene and everything is like default. You start from square one again and then you don't make the same mistakes. Yeah, I think it is good to spend some time to try to solve those problems. But start from scratch again. So just slowly start with your one light. Don't try to make it too complicated. Start with your skybox or start with your directional light and then build up from there. Don't get ambitious and then you put in 30 or 40 lights and then things get messed up because things will get messed up. You will get things like black spots and all this nonsense. So firstly, you know, when you look at what one of the things I do as well is in my modeling software, I will build two copies of the file. So there'll be a duplicate, right? One of them will be the final one and then one of them will be the white material. Use the white material object when you're doing a lighting. So you can immediately see when there are problems, right? If you have it all textured up, then you may actually not spot certain things, right? So start with the white room and then the black spots could be because the scale is wrong. It could be. There's so many things it could be. So just take scale into account, white diffuse material and just put one light and see if your black spots are there, right? And you put in another light and see if they're there. So that's how you do it, you slowly build it up so that you know where you went wrong. Anything else? Do you use ambient occlusion made in Maya? It can be tricky to do ambient occlusion. Unity, the ambient occlusion is not too bad. You can get away from doing it. There are some sliders there, you have some amount of control. But if you want to apply a map from external source, right? It can be very, it can be complicated, right? So I haven't really looked into that, but I'm sure it can be done. It's just a matter of like finding how to do it, right? Yeah, you can, if you want, you can put it into your texture itself. Yeah, but I find that when you bake everything into one texture, right? Then you lose a lot of control over the whole scene, you know? Because for Maya, I like to keep everything for a material basis, right? So if you use like another software to bake all the information in, right? Then you cannot just change this material of this, like let's say at runtime, right? I want to change this material to another one, like that, right? So I want to show the blur or I can change it. So it's hard. If you bake from somewhere else, it's very hard for you to, because you basically combine your whole diffuse map into one big map, yeah. Oh, thanks. No problem. Is this setting for shadows that set up the bottom or bottom? Yeah, but you did the global illumination one, right? You used that a lot. Not really. Okay, once it's all about shadows, right? Important thing to note is, okay, I'll go back to my simple scene. I think you're talking about... Is it per object? Right, this one, right? Is this important, right? So I found that to be like, not really, doesn't really do much. What I do find is helpful where shadows are concerned is you have your... Some lights you can control, like I think directional light, you can control the how hard the shadow is, right? Certain lights you can... Big shadow radius. So this can be very useful. So what this does is it actually changes... Yeah, just to... Maybe I can show you a quick example. Is this a special light? Sorry? Is this a special light? Or this? No, this is just a spotlight. Yeah, so it's just one of the diffuse... One of the default unity lights. That idea is not... Okay, actually quite a lot of them do... Yeah, the big shadow radius. So this will determine how harsh the shadow will be. So if you want a very soft shadow, you push up the number, right? And then you get a nice... Like if the light... As if the light was very far away. And then if you want a hard shadow, put it at zero. Just to come black colour. But I'm not sure when I want to see that it's actually... So it's like some weird... Probably like a... But about which platform are you... It's for Android, isn't it? Sometimes it could be... It could have to do with like... Sometimes you get issues with your... Graphics emulation and stuff like this. So this could be... What are you using? Windows-based or Mac-based? Windows, right? So this sometimes does solve those problems for me. I'm not sure if it will for you as well. But yeah, that sounds like a strange problem. Only when you run it. Black. Then when you press run, then okay. Wow, that's a strange one. That one, let's go and look at the problem. But so every time... Is it always a case? I think by some other guy, there is something... Ah, right, right, right, right. Yeah, so when you deliver your version control, then you always have... You always have problems like that, yeah. So I've been trying to get the Unity... They have this new version control thing, right? Collaborate, right? But I've been trying to bug them for it, but so far... Issues, right? Yeah. So actually normally at that point, I'll just clear it and then I'll do it again. But then you have to take those few hours to do it. Very hard. With Git, it's quite hard to manage. Actually sometimes I still use the legacy, the Unity access server. You know? Yeah, because it handles these files a little bit. But sometimes it also goes wrong. Any more questions? What was the feedback from the people from the clients that tried the first time they visited the room? It's so okay. I think that they have a lot of different opinions, right? With VR in general. I've met people who absolutely hated it, right? They don't want to have anything to do with it. We've met people who absolutely enthralled by it. They're like, wow, and then they'll call, there's a bunch of friends, everybody wants to try. So there are different pockets of people. Some people can't take experience for too long. Some people are quite okay with it. So I think it's very hard to judge at this time. And I think that this is quite a common feedback, right? Like it's hard to have a definite feedback. I mean, generally, people find it really cool, right? But I find personally like the engagement time is, people don't engage in it for too long a time, right? Whether it's discomfort or detachment. There's so many factors. But that's also one of the reasons why for us, all the content is available on non-VR as well. So just on your phone or tablet, right? We show that that's quite important because if you just go VR only, then you're kind of like stuck, you know, and then you're designing just for VR and you expect people to put it here. I think when you go in with the expectation of like, oh, you have to put this on, right? People don't like that. And if you say that, no, you can just use your phone, right? They tend to be more comfortable and then they'll put it on. You know, so it's a bit of a psychological thing as well. Yeah, but then also, right? Then you have the problem of like designing for both, right? So you have to make sure the experience is equivalent or good enough on either. Is there any like a life indifference or something between for VR or for just a real little tablet? The lighting? Yeah, lighting or something. No, it's absolutely the same. So content-wise is the same. With VR, I would say that you can get away with having more objects in the scene, having more draw balls, having head-to-head scenes, more textures, higher resolution. Because I think the phones are pretty powerful, the new central phones. And I think that the Oculus gets access to a lot of low-level stuff, right? So it uses a lot of the hardware of the phone. So it gives that extra horsepower. Where do you hit the limit? At the texture-wise. So texture-wise actually, I've never found textures to be a problem. Not as much as I have with trying to do fancy things, right? Like a real-time live, real-time reception. If you want to do post-processing effect, that will kill, you know, you'll go from like 100 frames a second to like 5 frames a second, you know, when you want to do some creating in the bed. So textures, I think that right now, the state of like our tablets, our phones, actually can handle the texture memory. It's more the GPU that can't keep up. So that's why I don't know. So I think we'll put this discussion offline in the last recording. Yeah, sure, sure, sure. Yep.