←back to thread

771 points abetusk | 8 comments | | HN request time: 1.371s | source | bottom
Show context
mmooss ◴[] No.41878445[source]
Anyone in the world with an internet connection can view, interact with, and download the British Museum’s 3D scan of the Rosetta Stone, for example. The public can freely access hundreds of scans of classical sculpture from the National Gallery of Denmark, and visitors to the Smithsonian’s website can view, navigate, and freely download thousands of high-quality scans of artifacts ranging from dinosaur fossils to the Apollo 11 space capsule.

Has anyone used these in games? They would be great easter eggs and they have artistry and design that is far beyond almost anything DIY.

replies(7): >>41878470 #>>41878586 #>>41879038 #>>41879570 #>>41881850 #>>41884229 #>>41886717 #
diggan ◴[] No.41878586[source]
> Has anyone used these in games?

No doubt someone has put some of them into games. However, most likely not in it's original shape/form, as the scans usually produce highly inefficiently (but high resolution, great for renders) meshes. The meshes from scans tend to be a mess, and when inserting a 3D model for games, you care a lot about how optimized the meshes are, and that the mesh has a low polygon count as otherwise you'll tank the performance quickly.

So since a developer couldn't just copy-paste the model into the game (requires a prepass to fix issues/optimize before import), it'll take valuable time from other things for just this easter egg. Again, no doubt someone has done this at one point or another, but that's probably why it isn't as common as someone could think.

As an example, take a look at the wireframe of the Rosetta Stone (https://i.imgur.com/rtpiwjZ.png | https://github.com/BritishMuseumDH/rosettaStone/blob/master/...) and you'll see what I mean. For a high quality rock-like object, you'd probably aim for 2000-5000 triangles, while the Rosetta Stone scan seems to have 480,000 triangles straight from the scanning software.

Sadly, it's simply too much detail to be able to import straight up. Luckily, Nanite ("Virtualized Geometry") and similar implementations starts to give us tools so we can stop caring about things like this and let the game engine optimize stuff on the fly.

replies(5): >>41878649 #>>41879249 #>>41879914 #>>41881964 #>>41882111 #
1. permo-w ◴[] No.41878649[source]
so it wouldn't be easy because these scans are highly detailed and so would require too many polygons to be loaded at once

would this remain true for modern higher end graphics cards?

replies(5): >>41878698 #>>41878704 #>>41878795 #>>41879004 #>>41879251 #
2. diggan ◴[] No.41878698[source]
> but you have to compress the scan

A bit simplified but yeah. In the industry I think it's commonly referred to as "cleaning up the topology" or "simplifying the topology" where "topology" is the structure of the mesh essentially. You'd put the scan/model through something like this: https://sketchfab.com/blogs/community/retopologise-3d-scans-...

> is this true with top spec machines too?

Games frequently feature 100s (sometimes 1000s) of models at the same time, so the optimization of each model is important. Take a look at the launch of Cities Skylines 2 for an example of a game that launched without properly optimized 3D models, the performance was absolutely abysmal because the human/resident models were way more detailed than justified for a city simulation game.

3. AlunAlun ◴[] No.41878704[source]
For rendering an individual piece, maybe not; but as part of much larger scene with many objects, animation, and rendering effects, it would place an unnecessary burden on the GPU.

It would be much easier to simply have a 3D artist create the object anew from scratch, in a format and resolution that best fits the game.

4. tomooot ◴[] No.41878795[source]
Even modern high end graphics cards use abstractions of the base data to create vast amounts of the final output's fine detail. For example tessellation and other techniques used for complex geometry like compound curves, which allow millions or billions of polygons can be visually simulated without needing to be present as polygon data, increasing opportunity for processing parallelization, while reducing load on communication busses and VRAM.

As an example, you could probably represent something like the grip of this FLIR camera in a couple hundred polygons and surface/curve definitions to help the rendering engine tesselate correctly. On the other hand, this overall scan is 357000 vertexes. Sure you can simplify it and bake a bunch of the texture into a normal map, but that then requires manually reworking the texture map and various other postprocessing steps to avoid creating a glitchy mess.

https://i.imgur.com/aAwoiXU.png

5. krisoft ◴[] No.41879004[source]
> it wouldn't be easy because these scans are highly detailed and so would require too many polygons to be loaded at once

In practice a a 3d artist could very easily create low poly models for these objects. For that low poly replica the high poly model can serve as a useful reference. (But to be honest many artist can just look at images of the object and do the same.)

This is not even hard, on the order of minutes (for something like the Rosetta Stone) or days (for something seriously detailed).

In this case where there is a will, there is a way. In fact this "reduction" step very often part of the game creation pipeline already. Monsters/characters/objects very often get sculpted at a higher resolution and then those high resolution meshes are reduced down to something more manageable (while they bake the details into a bump map texture, or similar).

replies(1): >>41879252 #
6. BlueTemplar ◴[] No.41879251[source]
Higher end graphics cards probably also mean more detailed scans being available.
7. Tarq0n ◴[] No.41879252[source]
Maybe I'm buying into the marketing too much, but it's my understanding that Unreal engine 5 can do this automatically.
replies(1): >>41879382 #
8. diggan ◴[] No.41879382{3}[source]
Not too much, it does actually work :) The concept is generally called "virtualized geometry" and Unreal's implementation is called "Nanite" but others are starting to pop up too, like the virtualized geometry implementation in Bevy.