説明
主な学習内容
- To identify what key factors lead to successful translation to real-time rendering engine
- Employable strategies for geometry and textures for believable surfaces
- Identify the first steps needed once in a real-time engine to begin working with your data.
- Identify real-time performance considerations for various project types like VR, Mobile, and Desktop/deployable.
スピーカー
- Christopher MurrayI'm a creative professional, senior technologist and lifelong learner currently leading real-time 3D and Industrial Metaverse skills enablement for Nvidia Omniverse. I lead high-functioning teams that specialize in creating best-in-class learning materials with an emphasis on source-of-truth accuracy, exceptional quality, and engaging experiences that encompass formal, informal and community-generated content. My daily role includes education and evangelism for tools and technology I can get excited about. I'm a 3D production veteran, experienced instructor, published author, and kid that never grew up. He holds a master's degree in 3D animation and has held key product evangelism roles at Autodesk, Epic Games, and now Nvidia. Murray has maintained a career-long relationship with learning. He was adjunct faculty in the School of Film and Digital Media at the University of Central Florida and was a department chair in Digital Production at Full Sail University. Chris is an experienced presenter, Lynda.com Author, YouTube personality, and he has authored a book, Mastering 3D Studio Max.
CHRIS MURRAY: So is this the last course-- or, I mean, the last class for the day?
AUDIENCE: Yeah.
CHRIS MURRAY: So there's no other classes after this?
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Oh, there's more classes after this? All right. All right.
AUDIENCE: It's not over till it's over.
CHRIS MURRAY: I know, man. You guys are troopers for hanging in there. I remember one year at AU, I did three classes. I taught three classes. That was torture. Thank you. Not because I had to teach them, but just all the preparation and all that other kind of stuff. So it was crazy. And they probably just recorded me saying that, so now, I'm never going to be invited back again. So I'm just-- I pretty much just shot myself in the foot.
All right, we'll go ahead and get started. My name is Chris Murray, and welcome to this class on modern tools for efficiently moving CAD data into a game engine. I'm with Unreal Engine, otherwise known as Epic Games. And we make real-time software.
So this is what we're going to cover today. We have an hour. We're showing beta software, so we'll see how it goes. I want to share with you some enterprise case studies a little bit and kind of explain what Epic Enterprise is about. Show of hands, who has heard of Epic Enterprise or Unreal Engine Enterprise or-- OK, good. That's actually good news. Come on in. Have a seat.
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Uh-oh. Uh-oh, all right. I'll cover an introduction to Datasmith. And another show of hands, who's heard of Datasmith? Even better. OK, great. We'll understand what it does and doesn't do. If you've seen my presentation on the booth on the show floor, this is a little bit of some of that, but I do have other things in here as well. So it's not a complete redo of that one.
We'll take a look at the difference between CAD and 3ds Max importers. And we'll talk about some tips for success using Datasmith, and really just any workflow into the engine.
So my first question is, who's here? So show of hands, who is using 3ds Max? All right. Who is using Inventor or other CAD data, CAD applications in general? OK. Revit? OK. Unreal Engine? All right. Good, a couple people using Unreal Engine. Unity? All right. Stingray or 3ds Max Interactive? OK. What am I missing?
AUDIENCE: Maya.
CHRIS MURRAY: What?
AUDIENCE: Maya.
CHRIS MURRAY: Maya? Anybody using Maya? All right, that's all right. Rhino? OK, couple of Rhino folks. All right, great. And who's doing product design? OK. Who is doing architectural visualization? All right. You didn't know you were going to answer all these questions, right? And I'm just going to fill the whole hour with questions. That will be good. So OK, good.
So again, my name is Chris Murray. And I was at Autodesk for eight years. I was a 3ds Max technical marketing manager. And I did all kinds of stuff. I did online stuff. I did videos and presentations. And now, I'm at Epic Games, working in the enterprise team.
So if you're-- I know several of you raised your hand that you're using Unreal Engine. Who knows about Epic Games in general, just our history a little bit? OK, so we're still a video game company. We make video games, which is unique because the other two real-time engines in the marketplace right now, they're actually not making video games. They are making game engines and making them available to you.
But we like to affectionately say we're eating our own dog food. So any of the new features that you see in Unreal Engine are probably solutions to problems that we've encountered ourselves with our own titles. And so we have a development team that is developing game titles, but we also have a development team that is dedicated solely to game engine technology.
And about two years ago, we realized-- you know, we give the engine away for free, right? So you can go out and just get the engine and start doing stuff with it. But two years ago, we noticed that a lot of people were using our engine for things that had absolutely nothing to do with games. And that number was really, really growing.
And so the enterprise team was formed to help shepherd that process for our customers. And so I was brought on board, and a couple of other people were brought on board. And we have a whole team of people that are strictly devoted to developing Unreal Engine for non-games. We have a development team in Montreal. We have a marketing team and strategy teams here in the US. We're headquartered in Cary.
Epic Games has been around for 18 years. So we believe we know what we're doing in real-time. There's over 3 million users worldwide. And like I said, the source code and the engine are completely free.
So if a lot of people are using it for non-games, we really started to need-- we really had to think about why getting CAD data into a game engine is important. And so our whole thing at Epic Enterprise is we want you to be able to experience your design. We believe it's important to get CAD data in, not just to see it, but to experience it. And is it safe to say that that's a generally accurate statement for people who are wanting to get data into a real-time engine? OK.
There are a couple of-- well, let me actually, let's go ahead and go with this. So who is using the engine today to experience designs? So I have a couple of case studies about what our enterprise customers are doing with the engine.
So we first really noticed that a lot of automotive companies were using our engine. And we have that-- well, automotive and architecture, actually. But we were starting to see a lot of proliferation-- there's some seats there and up there. Hopefully, you guys in the very edges can see the screen.
We're starting to see-- we noticed a lot of people using it for architectural visualization, because it's essentially like a game environment, right? But the problem is a lot of people were thinking that they had to be a game developer to start using our engine. And although it's important to understand the principles of real-time engines in general, you don't have to be a game developer to start using Unreal Engine. So a lot of people are using it-- automotive, architecture, aerospace, oil and gas.
In automotive, this was a really interesting project. You may have seen some of this footage at our booth. This year at Game Developers Conference, we debuted a real-time interactive car commercial with General Motors. And what we did was we partnered with The Mill, who makes this really cool car rig called the Blackbird that can-- it drives around. It looks really weird. It's a roll cage. It's a car that is-- it's an electric car, but it has no body on it. It's just basically a cage and tracking markers. And it can extend its wheelbase by 18 inches, and it can change its width by, I think, 15 inches. And it can become any car that's driving on the road, from a Ford Focus, to a McLaren, to a Camaro, in terms of the wheelbase and the performance handling. It's all electric, so they can tune it in.
And what car commercials-- car companies do is they use this car to drive down the road. And they shoot this car on film. And they then take this back to compositing, to a visual effects shop, and they composite in the new model, the new car on top of this rig.
And this is how they shoot car commercials for cars that aren't out yet. Like, General Motors doesn't want people seeing their cars driving down the road before they're released to the public while they're shooting a car commercial. So almost every car that you see in a car commercial today is computer generated. It's not a real car. And so they use this rig to do it.
Well, what we did is we did the same process. So the film company captured the Blackbird driving down the road. They captured the environment real-time. On top of the car, there's a 360-degree camera that's recording the environment as they drive through it. They're also capturing all the lighting information in real time.
And what we did was, instead of compositing a CG car onto a film plate and outputting a rendered image, we composited a 3D-- we brought all that footage into the Unreal Engine, composited a 3D model on top of that footage, tracked it, streamed real-time all the lighting information and all the reflection information into the car, and created, essentially, a real-time car commercial that is totally interactive.
And what I mean by totally interactive is, on the right-hand side of the screen, you could see you had a car configurator. And then you pick the model that you want, and then you click "Send it to the commercial." And everybody is like, oh, hey, yeah, you pre-calculated out every possible permutation that someone might pick, and you're just pulling from a database of pre-rendered videos.
Until I go ahead and change the car from a 2016 Camaro to a 1968 Camaro in the middle of the car commercial, while the car is driving down the road, right? Oh, and then they don't want that car, so I bring it back to the one they pick. And then, you want blue? OK, it's blue in the commercial, while the commercial is playing. So it's a completely real-time 3D composite.
So this is a good intersection of CAD data that we got directly from General Motors, the entertainment industry, and visual effects industry. It was a completely real-time car commercial playing back at film quality directly from the engine.
Aerospace is really taking advantage of Unreal Engine. NASA is using Unreal Engine for a hybrid reality lab simulator. They're using physics. They're using multiplayer experiences. They're doing that all, some in VR, some in AR. But for the most part, they're using the engine to simulate what they're going to see on the space station.
And NASA has a really high standard on visual fidelity and accuracy of what the interactivity is bringing. So they were really happy that they chose Unreal Engine to do that.
BMW is using Unreal Engine for design review. So in this case, you have two designers in what's called a bucket. And they're each seeing something-- they're in the same environment, and they're looking at different things. So you notice there's no A-pillar on the car. There is a steering wheel, but there might not be instrumentation. So there's no hood profile.
So they're swapping all of those things in and out, getting a look at what the car is going to look like in finished photoreal visual fidelity. And so they're using it in the design review process. So this is a good example of an enterprise customer who is using a game engine, but not creating any games. OK, they're just using it internally.
At the other end of the automotive spectrum, completely public, is McLaren Automotive. McLaren is using Unreal Engine to-- in all of their showrooms, they have a McLaren configurator where you can pick your color, pick your leather loadout, pick the color of your stitching. If you're going to pay $250,000 for a car, they want to give you every choice that you want.
It's also come to our attention that they're using engine screengrabs-- which that's what this is, by the way. This is not a render. This is an engine screengrab. They're using the engine screengrabs on all of their printed collateral. And so they've abandoned traditional photography. They were strictly using Unreal Engine for that.
Architecture, engineering, and construction. Did anybody get a chance to play this VR experience at our booth? We had this one at our booth. OK, someone did. All right.
So Theia and Suffolk Construction did a hotel room configurator. And really, it's you're picking different materials. You know, carpets, and bedding, and wall finishes, and even photographs. So it's a completely interactive VR experience that is guiding the design decisions of what they're doing for interior design.
So is this in the wrong spot? OK. All right. So on to Datasmith. And the whole purpose of this course is how we get CAD data into a real-time engine.
So in 2017, we announced Datasmith, which is a series of tools that are designed to accelerate the importation of CAD data into-- or excuse me, from 3ds Max into Unreal Engine, or from any CAD application into Unreal Engine. Is anybody moving any type of data from 3ds Max into Unreal Engine using FBX?
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yes, a couple of you? How is that process? Shaking your head no like you don't like it, or?
AUDIENCE: I mean, sometimes, I get-- I don't have control over the source content, so it's just the lowest common denominator [INAUDIBLE] get the data out.
CHRIS MURRAY: Right. Do you find yourself having to do a lot of rework? If you had materials, all of a sudden, you have to redo the materials, everything comes in white, all that other stuff?
AUDIENCE: Maybe.
CHRIS MURRAY: OK. So the whole purpose of Datasmith is to smooth that out, right? And so we-- not just smoothing out the process of exporting and importing into the engine, but also accommodating huge data sets.
If you think about the way a game developer works, everything in a video game is like a one-off piece of content, right? It's modeled specifically for that scene. The textures are specific for that location or that theme. Everything is completely optimized. There's no extra polygons. They cast out anything they don't want.
And if you think about it, we're the exact opposite, all right? We want everything in there. We want to see it all before we decide what we don't want to see, right? We don't give a crap about polygon counts. We probably care about surfaces. So how do we marry those two ends of the spectrum? And that's Datasmith.
So we've created Datasmith. We announced it in at Siggraph. And it's now out. I don't want to say it's in the wild, but the beta is open. Anybody here using Datasmith? I already asked that question. A couple of you? OK.
So the purpose of Datasmith, as I said, is make it easy. So we want to maintain fidelity to the source. So if you have texture maps and lights and cameras in 3ds Max, we don't want you to have to recreate those in Unreal Engine. So we convert those textures for you. We bring them over. We can bring over the material shaders. Obviously, geometry, right, because at least we have to do that, right? Lights and cameras. All of those things should be as close to 1 to 1 in Unreal Engine as they are in 3ds Max.
There was a CG architect survey last year exactly that said that Unreal Engine was the fourth most used still image renderer, which we find really interesting that people are using a real-time engine to render still images. But we're cool with that. But that means that they're getting a very high fidelity to the source. And that is coming over.
One of the things that really makes sense about that is, I spoke at a conference earlier this year in Italy, where it was all interior render visualizers. They weren't CAD architects. They were the people who actually made the pictures.
And I spoke on the last day, so I sat through the first day of listening to all these people speak about Corona and rendering. And like, if you tweak these settings just right, and you know, we're getting four images over the weekend, and it's awesome. And I'm like, four images in two days? Are you kidding me? Right? How about four images in three milliseconds? That's where I want to be.
So when you switch to a real-time engine, and you spend a little bit of time, you're still going to have to spend some work getting the images to look proper. When I say proper, like, proper lighting, proper exposure control, everything that you would have done with V-Ray or Corona or whatever.
But once you get that, your image output goes up by several orders of magnitude, because you don't have to redo that for every image, right? You're doing all this work for one image or four images. Well, do it once, and how about get as many images as you want from any angle you want with any number of resolutions you want? So that's why people are trying to move into Unreal Engine.
CAD data, same thing, right? CAD data is an entirely-- there's a lot of similarities with design visualization data. But CAD data has its own series of workflow problems. So we have over 20 different file formats that are currently in the beta. Inventor is there, Pro-E, SolidWorks, Creo, CATIA, and more.
But they aren't necessarily living in the world of 3ds Max that has UVs and polygons and stuff like that. So when stuff is brought in, in Datasmith, into Unreal Engine, it all has to be parameterized. We have to generate meshes. We have to generate polygons. We have to generate UVs. Who hates UVs? Who likes UVs? Who likes doing UV layout? All right. Right on. I actually like UV layout. It's very soothing.
So we automatically generate those UVs. We tesselate the geometry and material substitution. I'll be going through a case study about this in a little bit, because we have some new information. We have some new-- I don't want to call it an announcement. But there's something new in our CAD importer that's out this week.
Since we are in beta, I do want to take a little bit of time setting some expectations on what Datasmith is today and what isn't today. And it's really around V-Ray and Corona. So we know that most people are using V-Ray and Corona in design visualization as their primary renderer. Our research shows us this. So this is the target. This is the ideal target for us, is to accommodate those V-Ray and Corona users.
So here's what's happening with V-Ray and Corona materials. We currently don't have a V-Ray material shader in Unreal Engine. Chaos Group has announced that they are going to have a V-Ray version of Unreal-- or a version of V-Ray for Unreal Engine. And they probably will have V-Ray native shaders. They're going to write their own shaders for Unreal Engine, and we love that. Like, that's awesome.
So what we're doing today, though, is we're doing a conversion to Unreal assets. We're not doing a conversion to V-Ray assets in Unreal. That currently doesn't exist. So when we say we support V-Ray textures or Corona textures or shaders, we're reconstructing our own shader networks in Unreal Engine based on what we're interpreting from the V-Ray shaders. So we're trying to make smart decisions about-- we're analyzing the shaders and doing all that.
So where we are in beta is-- a good example are things like the color correction map, right? You can use the color correction map in standard shader, like a standard physical material shader, or even a standard material. You can use it in V-Ray.
Which standard Max maps do we choose to support? Are we going to write our own? If it's used a lot, are we going to write our own version of that in Unreal? Or if it's not used a lot, but it's important, like the Mix map, how do we handle the Mix map? And how do we handle the sub-maps that are in the Mix map, right?
So these are the type of things that we're addressing. So to the best-- you know, our development team in Montreal is doing a great job at converting those assets into usable assets that are in Unreal. But it's not native.
One thing that Datasmith doesn't do is it doesn't fix bad geometry. I think you mentioned you're getting your-- you don't have control over the assets that you get. You're kind of dealing with other people's data. Is that right?
AUDIENCE: Yeah.
CHRIS MURRAY: Yeah. Show of hands, who's dealing with other people's data, not their own? OK. We call that OPD, right? Other People's Data. And a lot of times, it's going to take you a long time to go in and fix things that may or may not work for you. So unfortunately, Datasmith isn't going to fix bad geometry. You're still going to have to do work and deal with that.
We don't fix bad UVs. But there is a little bit of a caveat. Unreal Engine is very forgiving when it comes to overlapping UVs for textures. So if you just use pretty much a straight flatten or one of the other modifiers in Max, and you have overlapping UVs for textures, it's not going to be horrible. The demo that I have here, some of the furniture is from Turbosquid. And it's good-looking furniture, but the UVs completely suck, OK? So it's very forgiving in that.
It is not forgiving on light maps. On show of hands, brave people, who does not know what a light map is? And it's OK. All right. Good, all right. Thank you. A light map is how we handle lighting and shadows in the engine. It's a way to optimize playback performance by cooking the shadows into the scene. And I'll show you that when I get in there.
And the reason I say that is because you do need good UVs for light baking. You cannot have any overlapping UVs for light baking. And that is one thing that Datsmith does do, is we do generate, automatically, light map UVs and put them in the proper channel in Unreal Engine so you don't have to do that.
Again, we're not a one-to-one renderer. You don't import anything into Unreal Engine with Datasmith and just expect it to be a final render. You still have to do work to bring your scene up to final. And I'll talk about that in a few minutes.
And we do not automagically reduce polygons. If you have a million polygons, it's going to come in as a million polygons. And that's actually OK. I think the largest scene I've seen in Unreal is 100 million polygons.
So polygons, believe it or not, are not the problem for Unreal Engine. It's how those polygons are combined together. So object combination. And that is something that Datasmith will do. And we'll talk about that soon.
OK. So very briefly, so workflows with Datasmith. Like I said, we want to entirely convert the scene with high fidelity. We want the experience that you have in 3ds Max to be very similar to the experience that you're having with Unreal Engine. We just spent a lot of time talking about materials. So there, you can see a basic shader tree that's been set up. I'm going to jump into Max here in a minute.
I mentioned automatic UV generation for light maps. There, you can see that's a chair object that came into Unreal Engine from 3ds Max. And its texture map UVs were pretty crappy. But that is what you get from Unreal Engine for automatically unwrapping your UVs for light maps.
We autoconvert unsupported materials. So if you're not in control of your data, as long as you're getting all of your assets, if you're getting texture map bitmaps that aren't supported in Unreal Engine, we'll go ahead and convert those for you. You don't have to go back and redo all that work.
We convert bump maps into normal maps. Is everybody familiar with what a normal map is in real-time nomenclature? We don't actually have-- the notion of a bump map doesn't exist. It's called a normal map, and we automatically generate those. And when we get into tips for success, I'm going to talk a little bit about that more.
In terms of the user experience, we fully support the scene explorer. So how you have your scene laid out is really important to us. We do generate a couple of new objects when we come in, in terms of instances and xrefs. We have the notion of a static mesh actor. And you do get multiple new objects in the hierarchy, but they're all pointing back to one mesh, right? So they're represented in the scene graph separately, but they're all pointing to one mesh. So we do support instances and scene and object xrefs.
Cameras. Currently, no camera animation yet. Remember, we are still in beta. So we're trying to get the materials and lights workflow going right now. But we do support physical cameras, standard camera, and a couple of different plug-in cameras, which are basically physical cameras. So if you're used to working with your focal lengths and your aperture settings and camera exposure control, that is all present.
Area lights are mimicked. So if you're working with area lights, no problem. All the other lights are supported as well, as well as IES files. If you're working with IES files in 3ds Max, they work the exact same way in Datasmith. I already mentioned instances. And Itoosoft's RailClone and Forest Pack Pro is the first third-party plug-in that we will support in Datasmith.
OK, so let's go ahead and jump in a little bit. I'm going to take you through-- I mean, let's be honest, Datasmith is pretty much a file import and export, so I don't know how sexy that really is. But I'll at least show you the process.
So here's, really, a standard scene. I'll go ahead and pop into perspective view here. And this is a V-Ray scene. Hey, what's going on? OK. Oh, my textures just barfed. That's all right.
AUDIENCE: Come on, Chris, sex it up.
CHRIS MURRAY: I know, man. I'm working on it. Let's go back to a camera view. There we go. There we go. I'll just leave it there. OK, so this is a V-Ray scene. These are all V-Ray lights, V-Ray materials. I have a couple of general area lights. I have environment background. I have a physical camera, standard camera. You know, basic stuff that you would get.
We only really have two options for exporting. You export the entire scene of what is visible, or you only export what is selected. So we're going to turn a couple of things off. I'm going to turn off the decor layer. I'll leave doors and windows. I'm going to turn off furniture. I'll leave the lights. I'm going to turn off the lights, and I'll explain why in a minute, as soon as autoback is done. So I'll turn off the lights.
So we're just going to export the building, doors and windows, and cameras. And we'll say OK there. So I'll go File, Export. We'll switch over to Datasmith. And let's go get a proper directory here. We'll do [? AU ?] Demos. We'll do, let's see--
AUDIENCE: Can I ask a question?
CHRIS MURRAY: Yeah, sure.
AUDIENCE: So you selected the [INAUDIBLE] and you're exporting to your [? new mini ?] file format [INAUDIBLE] But I don't see a data plugin. Did you have to install to get that--
CHRIS MURRAY: Great question. All right, that's a really good question. Can I come back to that in a second? That's a good one. So we'll do just a [? v39 ?] session. OK.
AUDIENCE: And then, specifically, like in our use case, we'll have [INAUDIBLE]
CHRIS MURRAY: Sure.
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yeah, OK. So I'll be sure to get to Q&A. All right. So we'll just do a [? v39 ?] empty space. We'll do visible objects. We'll say OK.
So it's a pretty straightforward export. This says Output Warnings, but I'm going to ask dev to change this, because it's really just output log. It'll tell you if you have texture maps that aren't supported, the first children will be used.
This is what I was talking about in terms of the Mix map, or how do we handle multi-map sub-maps, or if there's any issues with texture maps. So this is just-- you get this every time you export. It doesn't mean something has failed. It just tells you what's going on.
So over in Unreal Engine, then, you can come over here. This is where we're headed. This is pretty much the raw import. I did do some color-- or not some color correction. I did do some exposure control correction. Thanks to my friends in development, last week, they dropped a new build on me that had all exposure control broken while they were fixing the lights. So unfortunately, I had to do a little bit of brute force.
But this is actually pretty close to the default import that you get. I'm going to go ahead and do one. I'll do one here. And so this is an empty space. Now, we go ahead and we import. So let's go back to AU Demos. Let's do Export. So here's the thing that I just exported. We'll import it here.
So when you import, you have a couple more decisions here. You can choose what you want to bring in. And you can choose how you want to bring these things in. A static mesh actor per geometric object, single [? static mesh ?] actor with components, blueprint, et cetera. You can set your light map resolution. And we'll go ahead and merge it to the current level.
So we'll let this cook. And this is a live demo on beta software. So we've been warned.
AUDIENCE: I've got a question.
CHRIS MURRAY: Yeah, sure.
AUDIENCE: How about displacement maps? Let's say, if I'm using displacement for a brick wall or something. Is that on the road map, or--
CHRIS MURRAY: So the question is displacement maps. I don't know where that is on the road map. Right now, real-time displacement is-- like a vector displacement? Yeah. I don't know where that is--
AUDIENCE: [INAUDIBLE] vectors. Like standard 16-bit grayscale [INAUDIBLE]
CHRIS MURRAY: Yeah, those-- probably not. Those would be handled by normal maps.
So OK, so I'll go into the scene here. So I have purposely not brought in the lights because I want to use Unreal Engine lights to show you all of the textures. So I'm going to go over to lights. I'll just drop a direct light into the scene. And let's go ahead and get some-- let's rotate it in here. Let's find out where I'm at. I'll update it there.
OK. So you're starting to see it come together there. I'm piloting blind. We'll drop a skylight in right away.
Everything's a little dark because, I mentioned, they've broken my exposure control a little bit. So I have my exposure set really low, because right now, when I bring in the lights, everything is blown out. And that's-- we're fixing that. But this is what we get when we just throw a skylight in and a sun light.
And so you can see that my environment background has come over. All of my textures have come over. My cameras have come over. If I go to this view, my exposure is a little wonky right now. But I don't have the same lights in this scene that I had in the other one. But my point is, is I really just wanted to make sure that you could see that all of the textures are there. I'll crank the exposure up a little bit so you can see. So all of my textures are there.
If I had brought over-- the reason I didn't bring over all my furniture, that just takes a lot longer. It's not an instantaneous import or export, because we are doing all of those material conversions in the back end. When I export everything from this scene and import everything into Unreal Engine, it takes about four minutes to do that. And I just didn't want to waste the time doing that.
So you can see-- I'm not going to save this. I'll pop over to this one. So this looks wonky because my exposure is all blown out. Let me set it back to 0. So again, you can see, this is where we're headed once we get our exposure back into play. And this is the final-- don't save this. OK. So this is obviously why we're doing all of this. We want to get to something that looks like this.
So the only thing that's happened here in this scene from 3ds Max is file export, file import everything in the scene. The lights, I have added a post-process volume to additionally compensate for my exposure control, because I mentioned we're having the bug issue with exposure right now. But that'll be fixed. So I have a post-process volume for exposure.
And I did a light bake, OK? And so what a light bake is, is see these nice shadows here, and I get some nice contact shadows under there? And you know, we're getting some good looking shadows there. If I move these objects-- let's see if I can grab, and I'll do this. Oops, that's-- come on, let's move something else. Let me do Control-Z. Go over here. I'm in keyboard shortcut craziness right here because I'm going between Max and Unreal. It's driving me crazy. All right. So we'll grab this, and let's just move it.
So see the shadows there on the floor? So the shadows didn't move because the shadows are baked, OK? And so this is what light baking is. And once I get all of my lights in here, I could actually delete all the lights. I don't even have any of the lights in here, and all the lighting would stay the same. All the shadows would remain in the scene. And this is purely for performance.
AUDIENCE: Does it take a long time to re-bake [INAUDIBLE]
CHRIS MURRAY: OK, really great question. And I'm glad you asked that. So I said I did a light bake. And I did exposure control, the post-process volume. So in order to get to this scene, it only took about an hour's worth of actual work, and about three hours of bake time.
AUDIENCE: OK.
CHRIS MURRAY: OK. And when I say bake time, that's the same thing as hitting the render button. So I know I said we want three milliseconds of rendering time. We still have to cook-- if you want, you don't have to use baked lights. It's not a requirement to use baked lights. There's pros and cons to each method. But if you want baked shadows-- and you get soft shadows with baked shadows. If you want baked shadows, that takes a while.
And we actually do have our own little version of Backburner for baking lights. Not a lot of people know that. Everybody thinks that they just go up here on the Build menu, and it says Build Lighting. You know, I click the Build Lighting thing, and they go away, and it takes hours. And there are-- I will freely admit that there's a lot to learn about all the different settings in light baking. And I could do a week of AU courses on that, right? But it is learnable. I mean, if I can learn it, anybody can learn it, right? Because I'm not the sharpest knife in the drawer.
But once you get that figured out, these things, these settings here-- lighting quality, like preview, medium, high, and production, once you get your actual numbers dialed in. You can just say, I just need a preview real quick, and that may be a couple minutes. Medium, the medium cook took about an hour and a half. High takes about two to three hours. And production, this scene took about, I think-- it was, on Swarm-- Swarm is our version of Backburner. Swarm took about three hours on five machines.
AUDIENCE: OK.
CHRIS MURRAY: OK?
AUDIENCE: And how does that handle [INAUDIBLE] baking the shadows [INAUDIBLE]
CHRIS MURRAY: So if you're doing a timelapse, you won't have baked shadows.
AUDIENCE: OK.
CHRIS MURRAY: OK? You won't have a baked shadow. Now, here's where things get a little crazy with Unreal Engine. You can have a baked scene and a dynamic light, right? But any shadows that are baked won't move.
AUDIENCE: OK.
CHRIS MURRAY: OK, right? Because Unreal Engine will let you do that, OK? So if you want a completely dynamic scene, like when you saw me moving the sunlight around, and we saw light cascading across the floor, if I want that effect, I would not bake-- you can't bake the shadows. OK?
AUDIENCE: But you could bake your interior lights, and then make the sun dynamic [INAUDIBLE]
CHRIS MURRAY: Yes. That's what I-- yeah. That's what I-- yeah. So yes, you can have a combination of the two.
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Go ahead.
AUDIENCE: You mentioned you use [? pipe ?] machines to do the [INAUDIBLE] How stable is that to make [INAUDIBLE]
CHRIS MURRAY: As many as you want.
AUDIENCE: As many as you want?
CHRIS MURRAY: Yeah. Even though I work for Epic, and I've been there over a year, I have not seen the Swarm room, but I hear it's, like, 300 machines.
AUDIENCE: You said that you used only five machines.
CHRIS MURRAY: I only used five machines for this.
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yeah, because that's what I had in my--
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yeah. Yeah.
AUDIENCE: What resolution [INAUDIBLE]
CHRIS MURRAY: Great que-- so again, that's a whole other-- you know, so when you saw me import-- I'm going to bring this in, but I'm not going to actually import it. Right here, the question was, what resolution were my light maps, right? So I did a minimum light map resolution of 256 and a maximum light map resolution of 512. And that just set the baseline. And then I went in and found problems.
And for example, I cranked up my floor right here, because I wanted these-- one, the floor is my biggest object in the room, aside from the walls, right? And it's also the most visible. So I went in and gave it a custom light map resolution of 2k. OK. So I selectively go in.
And there's a penalty for using light maps, because those maps have to be loaded into RAM onto the GPU. So you want to be pretty selective, in terms of like-- I didn't do like this Frank Lloyd Wright lamp, right there, that only has, I think, 512. But the walls, the front wall, the floor, I think some other areas. Honestly, there's other areas I haven't finished, like that's horrible, right? But I'm not showing that, except for the fact that I just did, right. So if I didn't show that, you wouldn't know. So these are areas that I have to go in and fix. So, that's light baking.
I got a little bit sidetracked there. But that's the fundamental process for Datasmith for 3ds Max. Let me cover some CAD stuff, and then I want to make sure we have time for questions. So, let me pop back over to this. OK.
Importing CAD with Datasmith. Honestly, this one is super simple, right now, because this is the absolute newest thing that we have. The CAD importer has been only been in Datasmith for seven days. Actually, no, the CAD importer itself has been in a couple of weeks. But we have some new things in the last seven days that I want to cover. So, importing CAD data. I'm going to go ahead, and let's see. Let's go to workflows. Oh, shnikeys, what did I do with it? Now I did it. Is it in webinar? All right, CAD data, here we go.
So, this is a real simple CAD part from a motorcycle engine. It's a water pump impeller. So, this is the importer for CAD data. Now you noticed, I didn't have to do .UDATASMITH for this one. This was the SolidWorks part, OK?
And actually I'm going to cancel this a second, and let me redo that. So file import. Here's the SolidWorks part. Here are all of the different-- let me see if I can move this a little bit better here. So these are all-- now this is every file format, like texture formats, and all of this other stuff, but you know, CATIA-- well, obviously, FBX, because we've always done that-- IGES files, Inventor Assemblies parts, JT files, Pro/Engineer, Parasolid, Robcad, there's Rhino, SolidWorks, STEP files, so any of these, anything. Hopefully you see your file here. If not, let us know. These are all here. Obviously, here's Datasmith.
I haven't forgotten the question about the plug-in installation. I'm getting there. I haven't forgot your question.
So, that's all there is. I don't have to do .UDATASMITH. I don't have to export a Datasmith file from CAD. So I'll go ahead-- Did I bring this in already? I'll bring it in.
And then the only settings we have to pick here-- we do automatically generate light maps for UVs. If you need to-- it's going to generate them, whether you need them or not. So I'm going to pick a resolution that I might want. I want it to understand my model unit size, and then the two numbers that we've been playing with at the moment are [? core ?] tolerance and normal tolerance. The smaller the number on normal tolerance, the more polygons you get. So if I go over, if I just quickly pop back to here, you can see there's normal tolerance of 20, 5, and one. And as we go down, the polygons go up. Now obviously, we're going to give you a lot more control than these things. This is the first iteration of the CAD importer, but that's where we're at.
So I'll just go ahead and merge it to the current level, and it comes in. I have imported a full motorcycle, both from Harley-Davidson and from Motus motorcycle. The Motus motorcycle was 6,000 parts. The Harley-Davidson was like 7,200 maybe. And that import process took about-- Motus took about two hours. Harley-Davidson took-- well, that was a Rhino file, so that only, I think, took like an hour and 45 minutes. But I'm not suggesting that Rhino is going to be faster than anything else. I'm just letting you know that thousands of objects coming in take a while, right? That's why I'm doing one little rinky-dink part here. Yeah?
AUDIENCE: Does it still appreciate the-- so the object [INAUDIBLE] will be a higher level?
CHRIS MURRAY: Yes.
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yes. Yes, it will. Yes, it will respect your object naming. It will respect how you currently have the hierarchies combined in the file. I'm getting there. I want to talk about some things there.
So, this is the object. If I open up the static mesh editor--
If you tell me there's a new Beta Smith plug-in, I'm gonna-- I'm not even going to click that button. I don't want to know.
Give me channel one. So, there's the UVs. These were automatically generated I didn't have to do anything for that. All right, so that's created. That might not seem very exciting for one object. But what if you have like the 8,000 objects that I said, what are you going to do?
So this is what's new in Datasmith. Today is what day, Thursday? This is one week old, OK. And I don't actually have a scene to demo this on, because currently we need a custom build of the engine for this. But that will be coming very, very soon. So if you're in Datasmith beta, you will have access to this in the next engine build. And that's basically scripted data optimization using Python.
So, with CAD data right now, the process in a non-Datasmith environment is Rhino, SolidWorks, CATIA, whatever, bring it into Max or Maya to parameterize it, give it polygons, give it surfaces, maybe do textures, whatever, and then export it via FBX, and into Unreal Engine. And this is not preferred because it's a destructive process. And what it really means is that if you have to stop in an intermediate step, what happens if you have a change upstream? You then have to change downstream, and then you have to repeat that process. So, we want to essentially cut out the middle portion there, not requiring you to stop in an intermediary tool.
And so the CAD-- the Python solution looks like this. So Datasmith plus Python and Blueprint. You work in your tool of choice. You export via .UDATASMITH, so there will be a .UDATASMITH exporter coming from CAD. And merge objects, reduce polygon counts, all that other stuff, in Engine, and I'll show you a case study on that in a minute.
I do want to say that we will not always require our users to use Python to do this. Getting the Python implementation and the Blueprint background is kind of the first step in laying the groundwork for a GUI based workflow. So, this will be a user interface at some point, but right now we're just getting-- we're turning on the lights, and opening the windows, and doing all that stuff.
So what does that look like? So, a couple of examples. I'm going to kind of hurry through these, because I want to get to the case study, which is I think is a little better example. But we want to merge all the actors with a matching name. All right, so we import. We run a Python script. It gives you a blueprint that has everything, that has all actors matched, based on a piece of metadata.
Maybe we want to do a search and replace on materials. So this is really important if you have a lot of variance, or if you have a lot of revisions, you don't want to always have to go back and regenerate materials for new items that are coming into the scene. So, we can do a search and replace on materials en masse. And keep in mind, the scope of this type of work is thousands of objects, not onesie, twosies, you know, fixing a window sill, or something like that. This is re-importing the motorcycle engine. That kind of stuff.
We want to generate LODs. Everybody asks what's the best way to do LODs? Should I do that in Max, or should I do that in Unreal Engine? Having lived, you know, made my career in 3ds Max for the first part of my life, and now making my career in Unreal Engine, I can tell you definitively, do it in an Unreal Engine. Unreal Engine has a great LOD tool. It has some presets that you can use right out of the gate. And especially if we're going to automate this process on the import, don't waste your time in 3ds Max making LODs, because really it's just trapping you upstream if you do that.
AUDIENCE: So [INAUDIBLE] work better?
CHRIS MURRAY: What?
AUDIENCE: What about Inventor? What would be [INAUDIBLE]?
CHRIS MURRAY: Well, I'm not familiar with LOD stuff in Inventor, but when you see how we're going to implement our LOD automation in Unreal Engine, you'll be able to make a better decision, OK?
So, let's take a look at this case study. So, anybody stop by our booth and see our AR demo today, or the past couple days? All right, so this is this data. So what you saw in the booth on our AR demo was this data set. So 8,000 objects, 100 layers, 12 million polys. Completely unusable for real time. Totally awesome if you render it. OK? Completely unusable for real time.
How did we go about getting it into Unreal Engine and making it usable? So, we basically chose five areas of things that we wanted to concentrate on. I'm showing this in a case study. This does not mean that these are the only five things that the Python importer does. You can do a lot more things, but these are the things that we focused on because we think they're meaningful, OK?
So, first one, let's import it. All right let's start with the import so we're going to import automatically by using the .UDATASMITH format, and it'll come right in.
First thing we wanted to do is delete small objects, or I should say, second thing we wanted to do is delete small objects. So this model was modeled with all the little tire rubber spiky things all of them. 5,186 of them to be exact. They were present on the model. And obviously we don't need those in real time. So we wrote a Python script to find everything based on a specific name, and just get rid of it. And this is great because it's repeatable. So, if I get another motorcycle-- the team who made all of these historical motorcycles, there's like 20 of them, and I guarantee you all 20 of them have these little rubber knobbly things on the tires. So if I'm doing that, I don't want to have to do that manually for all 20 bikes. I just want to run a script.
OK, next thing we want to do is build LOD, but we don't necessarily want to build it on everything, right? So we want to pick out a few hero objects. In this case, I think we chose the seat, and the fender, and the front wheel, and a couple of other things, the fuel tank. And so these will automatically use the LOD tool in Unreal Engine and build those for you. So to your question about Inventor LOD, or Unreal Engine LOD, I guess that's really going to be up to you, based on where you need to make the creative decision. I would say, leave your source as is, and adjust it downstream, so you don't have to go two places to make a decision. You can always re-import it and just change the parameters.
And then merge objects. In Unreal Engine, performance optimization is based on what we call a thing called a draw call. And a draw call is, simply put, how many times the graphics card is asked to send something to the screen. So if you have, I don't know, how many spokes do you think are there, 50? All right, so we have 50 spokes. That's 50 draw calls. That's going to slow you down. So we want to combine all of those spokes together into one object. But there's also spokes on the back wheel. So we don't necessarily want to join all the spokes together, because you've got spokes over here, and you got spokes up in the front, but it does make sense to combine the spokes, and the rim, and the rubber tire itself. And we want to combine objects based on location, similar location, not necessarily similar type. So we would do that.
AUDIENCE: Chris?
CHRIS MURRAY: Yes?
AUDIENCE: Is there a plan to implement instances?
CHRIS MURRAY: Well, it already supports instances.
AUDIENCE: Oh, OK.
CHRIS MURRAY: Yes. So it already supports instances, and so these are all instances. We call them static mesh actors that are referencing one single mesh, but that's still a draw call. So, it's good that it's an instance, because it's not loading that geometry into RAM-- or into the GPU, but the GPU is still being asked to draw that mesh 50 times, or however many they are. So you want to reduce that as much as possible.
And obviously, substitute materials, which I've already kind of talked about. The original one was blue. We wanted kind of a cool retro one, and this will be really good for variance, and stuff like that. So the goal, obviously, is to get us something like this.
Now, what I haven't been telling people on the booth, just because those presentations are really quick, is that I mentioned that the Python, this type of organization, is eventually going to be a GUI, so you can do checkboxes, and fields, and things like that, and set it all up. And it's also going to be savable, so you don't have to redo this all the time.
If you have a custom workflow that you want for your specific data, you don't have to regenerate a Python script per scene. You can just say I want to use Scenario A, and maybe it's going to be, don't import anything under 10 millimeters, it's going to be unify-- patch any holes that you find, and don't import any vertices, or don't import any faces that are not visible to the world, so internal surfaces, right? So, we're heading towards that level of granularity. Because you don't need the inside-- the cylinder heads are in there. Like, you don't need that. So, that's what's coming with Datasmith. We're still in really, really, really early days on that.
So, I only have a few minutes left. Let me run through these tips for success. Start using Unreal Engine supported textures. I know I said we already will translate anything that is not, unsupported textures. We'll do that for you, but if you can start using our supported textures which are TARGAs, PNGs and JPEGs, that will save you export and import time. All right?
I know, you're laughing at my node map, aren't you?
[LAUGHTER]
You're laughing at that, aren't you?
AUDIENCE: It's a little tangled.
CHRIS MURRAY: Just so you know, that was the node map from the Harley-Davidson.
And so, combine objects wisely. We discovered something in 3ds Max, that I've been using Max for decades, and I didn't know this until about three weeks ago, is that you can have two-- I've known this about objects, but not about materials-- you can have two materials with the same name, with the exact same properties, everything. Like this artist had-- we had like three chrome materials, and they were all the same chrome materials, like he'd forgotten the first two times he had made chrome. So we had three chrome materials, and Max has no way to intelligently combine, to recognize that that's an explicit chrome material, and apply that one-- you know, like get rid of two of them, and just use one. There's no way to do that in Max. So, combine objects wisely. That was a pain.
And use something like Bitmap2Material to generate custom bitmaps, like roughness maps, and extra normals. I will admit, this is a little bit of an endorsement for Substance. I personally use this tool. I know the guys at Allegorithmic. They really know what they're doing when it comes to Substance Painter and Designer. Whether I worked for Epic, or Autodesk, or just for myself, I would confidently recommend Substance Bitmap2Material.
UVs still matter. If you hate UVs, start practicing, at least a little bit, so you know what's going on, and so you can fix problems.
Polyreduction tool, yeah, I've already said this. Use the LOD tool in Unreal Engine, so I'm not going to talk about that.
Combine objects wisely, this is what I was referring to. Combine them by location, not by type.
Re-importing objects, you can. There are multiple ways to re-import. Re-importing objects with same names replaces. That has implications if you're doing different types of object combinations. So you want to be consistent on object combination. Otherwise, you might accidentally delete something, because you inadvertently replaced it out. So, be careful.
And organize your scene. This is in 3ds Max. I'm not familiar with scene organization in other tools or apps. But please take advantage of that, because you do get a lot of stuff. All of the instances in Unreal Engine are turned into static mesh actors, and your Scene Explorer will potentially explode with a lot of stuff. It doesn't mean more geometry, it just means more object names in the node tree. So, being organized on the front end will save you time in the back end.
It is not too late. If you're not in the beta, you can get it now, UnrealEngine.com/beta. This is what I recommend doing first-- download the engine, which is free. The email that you use to register for Unreal Engine, to get the engine, needs to be the same email that you're going to use to register for the beta. We're not policing, you know, whatever-- anybody who signs up for the beta is going to eventually get the beta. But we've had over 8,000 people sign up for the beta already, so we're rolling it out a little bit slowly. So if you've signed up, and you haven't gotten it yet, don't worry. It's coming.
Thanks for those folks, TurboSquid, and DOSCH design, and of course Harley and Motus. I wanted to do that. That's all I have. Thank you for your time. I appreciate it. And if you have any questions. Thank you.
[APPLAUSE]
Right at 3:15, but that's all right. Let's go ahead and take a few.
AUDIENCE: What about [INAUDIBLE] shapes, like [INAUDIBLE] physics are [INAUDIBLE] make a physics [INAUDIBLE]?
CHRIS MURRAY: We have physics built into the engine. So, I think it's-- not Havok, what's the other one?
AUDIENCE: Chair, [INAUDIBLE] when you create like a hole in a digital chair, would it understand--
CHRIS MURRAY: You would have to make a collision mesh. Right now, we're not dealing with-- we're not creating collision meshes at the moment.
I do want to go back to this question here, that I waved off halfway through. Where do we install it? When you get the beta, you download the engine-- or you download-- it'll be in the installer. When you register for the beta, you'll get an access code, and you'll actually get Datasmith through the Unreal Engine marketplace. And then you'll install Datasmith into Unreal Engine, and then it'll immediately install the 3ds Max plug-in from the Unreal Engine Launcher. It's a little unusual, installing a Max plug-in from the Unreal Engine Launcher, but that's how it works.
So everybody's like, how do I get-- Where is it? It's like, well, you have to install Datasmith into the Engine, and then it'll install it into 3ds Max. So did that answer your question?
AUDIENCE: Yeah, it did.
CHRIS MURRAY: OK. Great.
AUDIENCE: Inventor plugin?
CHRIS MURRAY: What?
AUDIENCE: What about Inventor plugin?
CHRIS MURRAY: Inventor plug-- Well, but see you don't need to. That's the whole point of the CAD importer, right? So we support Inventor natively. Eventually, there will be in Inventor exporter for some of the Python stuff that's coming, if what I heard from dev is true. At the very least, you can just import right in through Inventor.
AUDIENCE: So, as far as-- what about textures in Inventor? So whatever I have-- I don't even know what the format is, [INAUDIBLE] Inventor, but I can bring everything in and it'll carry all the textures with it, and convert if it needs to?
CHRIS MURRAY: Yeah. It will convert it. It'll probably convert it. I don't know where we are on Inventor materials yet. One of the things that we're providing for with Python scripting is material substitution. So if the materials aren't supported in Unreal Engine, you'll have the option of probably generating a new material in an Unreal Engine, or substituting for an existing library.
AUDIENCE: You have a pretty extensive library.
CHRIS MURRAY: Yeah, like for auto, we have a ton of automotive materials. We're getting a lot of material libraries all the time.
AUDIENCE: Are they similar to workflows for Revit?
CHRIS MURRAY: OK, Revit. So thank you for-- So, the question is workflows for Revit. We don't currently support Revit at the moment, and there's actually an interesting reason why. The reason is that there is no SDK for Revit. If we want to support Revit, we actually have to install what's called a Revit engine. In 3ds Max, the 3ds Max Revit workflow, you actually install a silent version of the Revit engine. I don't know if you guys know that. So, it's like a deadhead version of Revit that allows you to have data in and out of 3ds Max. So if we did that, we'd have to have a license of Revit for every Unreal Engine that we sell. So, it's a little bit of a business decision.
So, the current workflow for Revit is you have a couple of options. FBX out. FBX in. Not fun. Or if you have-- I think most people that have Revit have access to 3ds Max, so go from Revit to 3ds Max, and then use Datasmith into there. There's another option, which is the guys from Twinmotion. Have you seen Twinmotion 2018, I think is where it's at?
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yeah. Yeah. And that's built on Unreal Engine. So, in Twinmotion, everything you see in there is Unreal Engine. And at SIGGRAPH, I mean, I don't want to speak out of place for the guys at Twinmotion. All I can say is what I heard at SIGGRAPH on the stage was that they were eventually going to have an exporter from Twinmotion into an-- export a Unreal Engine project, but--
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: What?
AUDIENCE: Will they [INAUDIBLE] the 885?
CHRIS MURRAY: I don't know. And I haven't heard anything else since they said that in a public forum. So, I would contact the guys at Twinmotion to see what the plan is there. So, unfortunately, it's a little bit limited right now.
Yeah?
AUDIENCE: Followup to the Revit question. Typically we have done maps for [INAUDIBLE] materials. Is that an issue once that goes into Datasmith?
CHRIS MURRAY: I don't think so. I mean, honestly, we're still really early in beta, so we haven't tested every single permutation. We'd love to hear feedback on that. So if you could join the beta, and then let us know if there's any problems there, that's the best way for us to troubleshoot those problems.
AUDIENCE: Are you going to upload the presentation?
CHRIS MURRAY: Yes, I will. Yeah. Yes I will. I'll upload this presentation to the AU course.
AUDIENCE: One more Inventor question. We built in [INAUDIBLE] model, do we have the ability to-- can the Unreal Engine bring that in as well, so you can interact [INAUDIBLE]?
CHRIS MURRAY: Today, no, but that doesn't mean that it won't be supported at some point. Like I said, we're still in early days on the beta. We're just trying to get all the surfaces pointed in the right direction, and all the materials coming. We get asked that a lot about camera animation. We currently don't support camera animation, but that's coming. Doing camera animation in Unreal Engine is super easy, totally doable.
AUDIENCE: Well, I'm talking more about bringing. So I bring in an object, and I ground the object [INAUDIBLE] or something but it has--
CHRIS MURRAY: IK?
AUDIENCE: --articulate it. Grab the end of it when I'm in VR, you know, is there a way to interact with it?
CHRIS MURRAY: Yes. Yes you'd have to--
AUDIENCE: [INAUDIBLE]
CHRIS MURRAY: Yes, you would have to construct that. You'd have to construct that, reconstruct that in Unreal. Right now, we're not automatically supporting it, but I could see that coming.
AUDIENCE: That's all part of the interface, the Unreal Engine, it's all in there?
CHRIS MURRAY: Yeah, eventually the Datasmith CAD importer will support-- I hope will support that. But if you need to do it manually, yeah, you do it directly in Unreal Engine.
AUDIENCE: But you have support for like, [INAUDIBLE] schematics?
CHRIS MURRAY: Yes.
You had a question in the back?
AUDIENCE: Yeah, it's been a little while, but previously when I was working with IES files, it would recognize like point [INAUDIBLE]. Do you utilize the full library of IES files now, for like fluorescent tubes and other--
CHRIS MURRAY: Tube lights, we're working on tube lights right now. I think that's actively under development. The light-- current version of the plug-in, the lighting is undergoing a complete overhaul. Frankly, I don't know what I'm going to get next week. What I got this week was a doubling of every light in the scene, and I don't think that was the plan. Yeah, I know tube lights are coming. Yes, IES files for tube lights, the entire library will be supported.
AUDIENCE: Awesome.
CHRIS MURRAY: Cool. All right, everyone. Thank you for your time. I appreciate it.
AUDIENCE: [INAUDIBLE]