4 ms·
This idea of importing CAD-type content into game engines has been around for ages. People used Duke Nukem 3D to model building interiors, and not just for wor
by pugworthy 4y ago
This idea of importing CAD-type content into game engines has been around for ages. People used Duke Nukem 3D to model building interiors, and not just for workplace deathmatch amongst the IT crew.
The core problem of CAD importing in my experience is that CAD content is not at all designed for or suitable for direct game engine importing. It requires a ton of cleaning to be optimized.
It's one thing to bring in some terrain and an appropriate overlay of imagery, but another thing to try and import actual CAD content.
As an example, I had the CAD files for a large industrial printing press at work, and thought about importing them into Valve's latest engine for VR. But the CAD files were TOO detailed. I mean literally the threads on each screw were modeled, and even the interior of the lock on a cabinet that was part of the machine. Every single component on circuit boards was modeled. It brought Hammer and the game engine to its knees with all the detail.
Another issue with CAD is that not only can things be incredibly overly complex, but the model can include details that the end user simply has no need to visualize, and hence no need for the engine to try and render. Like the interior of that generic key hole latch on the cabinet. You don't need to model the interior of a pipe let alone some complex interior valve unless there is a reason to actually see that detail. 99% of the time a cylinder will do just fine.
Then there is kinematics and animation. Want doors to open and close? Objects that are moveable by humans to be physics objects? You have to do all that yourself. Why would you do that? Well because that's part of an immersive environment that creates a truly engaging and informative experience for the design you are working with.
In the end it was easier to draw on my past experience as a level designer. I selectively imported some details that would be difficult to reproduce, then hand built other components out of simple shapes and apply textures that showed the necessary detail without actually modeling it in detail. And if I did need detail, I could remodel a specific part at a higher level of detail and take advantage of built in level of detail management for models to keep the engine happy.
Summary: nice idea, been talked about for ages, not really that easy if you actually want to build good interactive content in a game engine.
- taeric 4y agoThis feels like it could be part of an import pipeline, though? Simplification of the models can't be automated at all?
- jayd16 4y agoIt can be automated but a deep import pipeline would really hurt iteration times. There's also a lot of tuning that goes into what is and is not the important part of a model and whether the simplification removes detail you expect to see.
- madrox 4y agoThere are many tools that do this, but more often than not they still require significant hand tuning to look good. Best metaphor I can think of is publishing a translation of a novel. You can google translate it to get started, but you probably still need to reread the whole thing. In many cases, it's probably faster to start from scratch.
- jayd16 4y agoUE5's Nanite might be able to handle all the detail. I'd be curious to hear if anyone has tried it.
- deleted 4y ago[deleted]
- spockz 4y agoThis sounds like a type of problem where on import a pad can be done to remove invisible detail. Then if any changes like making a door interactive can be remembered and re-applied, or perhaps even written declaratively. “All objects with label X can be opened”. Then it seems like at least the import prices can be more repeatable. (Btw, I’m amazed that invisible details effect rendering, even our university toy renderer had a pass on visibility.)
- dvisca 4y agoImporting CAD files into GIS I always encounter the opposite, especially if the files are from architects. They can’t even close their polygons.
- takk309 4y agoI was going to say the same thing. Seems like a lot of art focused vector programs aren't as rigorous with their polygons as a CAD program. But, I suppose it is just a matter of the level of detail the end use demands.
- Melatonic 4y agoTons of VFX and game content "shortcut" strategies like this require lots of cleanup however - even very good 3D photogrammetry scans are probably going to need to be manipulated (even if they look visually great) from an artistic point of view. The whole point is shortcutting and cutting time off the artists table. Lidar does not really give you anything that you can directly use out of the box but it does give you a huge leg up with perspective, sizing, etc etc. Certainly not a silver bullet but it seems like it could be a huge time saver in certain scenarious
- Aspos 4y agoDo you think a good neural network could take CAD as an inspiration and produce a usable, simplified model with only the parts which actually are visible?
- solardev 4y agoI think GIS content is typically more straightforward than CAD. Most of it is 2D, stuff like vector rivers and streets, or a heightmap (terrain) as a raster bitmap. You can import that kinda stuff into many games and use it as a real-world location. But they are moving into 3D, such as using drone photogrammetry to map cities at once: https://pro.arcgis.com/en/pro-app/2.8/help/mapping/layer-properties/what-is-a-scene-layer-.htm https://pro.arcgis.com/en/pro-app/2.8/help/mapping/layer-pro... Sometimes those 3D layers are built from simple extruded polygons, other times they are more detailed meshes. But AFAIK even the most complex don't typically approach CAD complexity. More like the 3D buildings you see in Google Street View or the old Microsoft Flight Simulator. Any GPU capable of running an Unreal Engine game should be able to handle that sort of stuff. But it's really cool to see them going this way. It's always been a dream to play a AAA game in a real-world city (kinda like Watch Dogs or GTA) but where you can import any city you want. You can already kinda do this with terrain with Cesium for Unreal (https://cesium.com/platform/cesium-for-unreal/ https://cesium.com/platform/cesium-for-unreal/) or for other games like Cities Skylines (https://en.number13.de/cities-skylines-how-to-import-heightmaps-in-the-editor/ https://en.number13.de/cities-skylines-how-to-import-heightm...), but I think those typically are limited to basic heightmaps. Being able to translate not just buildings, but hydrology, vegetation, population density, etc. all from public GIS data, and simulate a whole game from them...? That'd be really awesome.
- geo-matik 4y agoIndeed, the ArcGIS Maps SDK is about GIS content first and foremost, not CAD content that almost always lacks geolocation. It's a bit disappointing from HN that the top comment, while containing valid information, is only remotely applicable to the tool at hand.
- solardev 4y agoI hear ya, but I also think it's so cool that these tools are finally intersecting! GIS has come a long way in the last decade or so, along with drone photogrammetry, while UE and Unity continued to mature alongside GPUs. We're finally at a point where this sort of thing is not just conceivable, but even doable on a typical mid to high end gaming computer at home, using largely open tools (like QGIS, public GIS data from the city/county/state/federal agencies, the open drone photogrammetry toolkit whose name escapes me at the moment) alongside home/indie pricing for the big commercial tools (UE, Unity, Arc, ESRI APIs). We're finally at a place where that convergence is happening. As someone who grew up a gamer, went into the natural sciences, then web dev, it used to be hard to find overlaps in these fields. Then gradually the professionals in each started realizing their shared need for geospatial data, QGIS really took off, Leaflet and Openlayers got really good, WebGL matured... Anyway blah blah blah it's a perfect storm of many technologies finally getting cheap and easy enough to use. I can't wait to see what people make.
- KronisLV 4y agoGodot 4 is going to have automatic LOD capabilities, for example (there are YouTube videos that look at it in detail as well): https://www.reddit.com/r/godot/comments/kf86o8/godot_40_will_finally_feature_builtin_lod_support/ https://www.reddit.com/r/godot/comments/kf86o8/godot_40_will... I can't help but to wonder why more engines, like Unity don't implement this, since it seems like a game changer in some specific scenarios. Unreal's Nanite, for example, generated a lot of attention for this exact reason (being more advanced than Godot's offering, but covering at least a few similar use cases). Of course, ideally you'd take the models that you need and feed them through some retopo solution to generate slightly lower poly meshes (if you don't actually want to show all of the details for the screws etc.), even a Blender modifier might be useful here, even though it might give worse results than doing things by hand: https://docs.blender.org/manual/en/latest/modeling/modifiers/generate/decimate.html https://docs.blender.org/manual/en/latest/modeling/modifiers... But in lieu of that, LODs might just make the runtime performance passable, though the settings you'd need would be pretty niche - only showing the highest level of detail inches away from the model, or something like that. It doesn't really solve editor performance per se, though.
- holoduke 4y agoIsn't that what unreal nanite is doing ? Auto LOD generation based on high detail objects. I don't know about the still existing limitations.