extract all meshes from ...\Subnautica\AssetBundles\lod4worldmeshes with AssetsBundleExtractor 2.2beta1 (or any Unity model converter can be used). in the text OBJ-format will be 5980 files with a size of ~ 1.5 GB.
To accelerate the loading it is desirable to combine these files into one large file (I did "layer by layer", each "floor")
~20M vertices, ~40M faces...
load these models into Meshlab, remove unnecessary (bottom at the level of three kilometers, side "walls"), clean (combine vertices, fix a bunch of irregular surfaces).
in Meshlab can be visualized AO and beautiful X-Ray shader, but to build a depth map I used CloudCompare v2.10.alpha
p.s.
The pictures show that in the game world there is still room for future DLC
0x6A7232USMembersJoin Date: 2016-10-06Member: 222906Posts: 5,272Advanced user
@nesrak1 -- does this help you at all with your terrain question? Sorry, I forget exactly what you were looking for back then but I thought it might (possibly) be related.
Morph_GuyMembersJoin Date: 2016-04-21Member: 216034Posts: 509Advanced user
Could we get a another updated version of this 3D map now that the full v1.0 version of Subnautica is out and all of the final terrain touches have been made?
hhrhhrRussiaMembersJoin Date: 2017-12-17Member: 234462Posts: 10Fully active user
release verison does not contain lod meshes (...\AssetBundles\lod?worldmeshes) and a third-party renderer from the original octrees was not found yet, so no.
hhrhhrRussiaMembersJoin Date: 2017-12-17Member: 234462Posts: 10Fully active user
I still found these files, they were transferred into Unity-resources. There are a change, but nothing is noticeable. But I use the opportunity to publish 4K maps similar to those early (link to Imgur):
In addition, I uploaded the same maps to Mega in PNG-format, all the original raw chunks in OBJ and the finished huge model of the world in PLY.
The model can be opened in MeshLab; AO is assigned to the color of the vertices and the faces are painted in depth.
AvimimusMembersJoin Date: 2016-03-28Member: 214968Posts: 402Advanced user
I suppose between this excellent work you guys are doing and knowing the terrain format - we're only a couple hundred hours away from programming terrain editing tools?
shironatorSlovakiaMembersJoin Date: 2019-02-12Member: 250852Posts: 10Fully active user
hey, hhrhhr
I am trying to make map from Subnautica Below Zero. I manage to extract those chunks with bits of map and load it into meshlab.
Now I have about 9900 files with names like "Chunk_0_0_0-resources.assets-6282.obj", Chunk_0_0_1-resources.assets-6283.obj".
I have found those files in \steamapps\common\SubnauticaZero\SubnauticaZero_Data\resources.assets and extracted meshes via AssetsBundleExtractor.
I have merged them using your command "copy *-XX-*.obj level-XX.obj", now I have 24 OBJ files.
But when I load them into meshlab, it shows me a cube, where all of meshes are inside of it = chaotic mess of meshes one clipping through another.
This also happening even if I load non-merged OBJ files.
If I load files separately, one by one, I can see bits of map.
When I load your OBJ files of Subnautica map fom MEGA, they will nicely fit one beside another, creating a map.
Can you please advice, what I need to do to achieve such result?
thx.
hhrhhrRussiaMembersJoin Date: 2017-12-17Member: 234462Posts: 10Fully active user
all the "cubes" of the game world have local coordinates starting from zero. the size of these "cubes" - 32 game units. to combine into one large model, you need to add an offset to the local coordinates (chunk coordinate * 32)
for example, the dot (10,20,30) in Chunk_1_2_3 will have global coordinates
x = 10 + 1 * 32
y = 20 + 2 * 32
z = 30 + 3 * 32
in order not to do this manually, you can use any script to recalculate the coordinates. I use a slightly fixed Lua script for the original game — https://gist.github.com/hhrhhr/0969a85afce034015b8cd02ac2544477 . This script, besides the offset of coordinates, at the same time fixes the coordinate system, since this system in Meshlab is different from the game one.
shironatorSlovakiaMembersJoin Date: 2019-02-12Member: 250852Posts: 10Fully active user
edited February 2019
Thx very much. As far as I studied those files, I think it does following:
mass_convert.bat:
will convert mesh files in *.dat format into OBJ by using mesh2obj.lua script. It will also recalculate coords like you said before.
Then merge them.
But that "mass_convert.bat", is expecting DAT files instead of OBJ I have. In AssetBundleExtractor, the only function, which creates DAT file is "Export raw" . However, this creates file with name like "unnamed asset-resources.assets-14252.dat", so I will lost all proper numbering like 0-0-1. Even if I try to modify bat file and change *.dat to *.obj, the "mesh2obj" fails with errors like:
f:\lua53.exe: F:\\mesh2obj.lua:13: bad argument #2 to 'su' (string expected, got nil)
stack traceback:
[C]: in function 'string.unpack'
F:\\mesh2obj.lua:13: in local 'uint32'
F:\\mesh2obj.lua:38: in local 'convert'
F:\\mesh2obj.lua:117: in main chunk
[C]: in ?
How I can get those *.dat fles, so I can convert it by your lua script? Or how to do it just with my OBJ files which I already have extracted?
I have exported OBJ files in AssetBundleExtractor by selecting those files by its type (mesh) then going to Plugins->export to .obj
thx
shironatorSlovakiaMembersJoin Date: 2019-02-12Member: 250852Posts: 10Fully active user
I see now. Thx, it works.
remove unnecessary (bottom at the level of three kilometers, side "walls"), clean (combine vertices, fix a bunch of irregular surfaces).
Im completely new to meshlab. Worked with 3dsmax in the past, but meshlab is too different for me. How to combine all layers into one mesh, so I can do changes to entire model at once? Tried to goodle it but found nothing. Then I can remove side walls effectively, because now, I must select layer, then select vertices, then delete.
hhrhhrRussiaMembersJoin Date: 2017-12-17Member: 234462Posts: 10Fully active user
I don't like video guides, but English is absolutely not my native language, so it will be easier for me to record a sequence of actions in the form of a video clip. Give me some time and i will do it...
Comments
~20M vertices, ~40M faces...
p.s.
The pictures show that in the game world there is still room for future DLC
Crashing, lag problems? Or maybe your old save didn't get the latest update? Upload your saved game folder to help the devs troubleshoot, then try clearing your cache directories | Automatic Cache cleaning tool here | How to use the Debug Console | How to play any version of Subnautica using Steam | Tips for Subnautica beginners | Why can't the devs "just fix it"? - a modding session for you to educate yourself with Want more frames? Try adding this to your launch options: -window-mode exclusive | Solve options not saving or black screens by deleting options file | Possible workaround for Pause / Menu Bug | Rescue a trapped Seamoth / PRAWN
Slow loading / textures popping in? Try moving Subnautica to an SSD | How to switch Subnautica to Experimental mode (clear cache afterwards) | How to run chkdsk on your drive | How to verify integrity of your game cache (in the "Installation" section) | Blue screens or computer freezing up? Try this fix (updates a corrupted DX10 compatibility file in the graphics driver that sometimes doesn't get updated)
Subnautica launches in a tiny window? Use Task Manager to Maximize it (Thanks FlippingPower) | How to place your Moonpool so it connects correctly (includes diagrams) | Want to hang out with fellow players and the devs? Subnautica Discord server ← swing on by! | SuspensionRailway's Modding Emporium ↔ Categorized list of mods, including 1st playthrough-friendly ← Hey, look, mods! → ReShade mods ↔ Subnautica NexusMods | TERRAFORMING mod
Humans don't crush at the depths you might think
Joystick problems? | Xpadder | UJR / vJoy | JoyToKey | Get detailed info for troubleshooting: CPU-Z | GPU-Z | HWiNFO64 | Speccy | Pastebin | Recover the data on your crashed hard disk! | I'm a Total Geek
Forum BBCode Rainbow text generator
In addition, I uploaded the same maps to Mega in PNG-format, all the original raw chunks in OBJ and the finished huge model of the world in PLY.
The model can be opened in MeshLab; AO is assigned to the color of the vertices and the faces are painted in depth.
It shows the quality and complexity of the world - giving a great sense of relative scale too...
It might also be worth combining with tanzanite's maps into a collection:
https://forums.unknownworlds.com/discussion/153314/subnautica-heightmap-spoliers
I am trying to make map from Subnautica Below Zero. I manage to extract those chunks with bits of map and load it into meshlab.
Now I have about 9900 files with names like "Chunk_0_0_0-resources.assets-6282.obj", Chunk_0_0_1-resources.assets-6283.obj".
I have found those files in \steamapps\common\SubnauticaZero\SubnauticaZero_Data\resources.assets and extracted meshes via AssetsBundleExtractor.
I have merged them using your command "copy *-XX-*.obj level-XX.obj", now I have 24 OBJ files.
But when I load them into meshlab, it shows me a cube, where all of meshes are inside of it = chaotic mess of meshes one clipping through another.
This also happening even if I load non-merged OBJ files.
If I load files separately, one by one, I can see bits of map.
When I load your OBJ files of Subnautica map fom MEGA, they will nicely fit one beside another, creating a map.
Can you please advice, what I need to do to achieve such result?
thx.
for example, the dot (10,20,30) in Chunk_1_2_3 will have global coordinates
in order not to do this manually, you can use any script to recalculate the coordinates. I use a slightly fixed Lua script for the original game — https://gist.github.com/hhrhhr/0969a85afce034015b8cd02ac2544477 . This script, besides the offset of coordinates, at the same time fixes the coordinate system, since this system in Meshlab is different from the game one.
result on Steam — https://steamcommunity.com/sharedfiles/filedetails/?id=1640442808
ready maps (version Feb-2019 9892) on Imgur:
mass_convert.bat:
will convert mesh files in *.dat format into OBJ by using mesh2obj.lua script. It will also recalculate coords like you said before.
Then merge them.
But that "mass_convert.bat", is expecting DAT files instead of OBJ I have. In AssetBundleExtractor, the only function, which creates DAT file is "Export raw" . However, this creates file with name like "unnamed asset-resources.assets-14252.dat", so I will lost all proper numbering like 0-0-1. Even if I try to modify bat file and change *.dat to *.obj, the "mesh2obj" fails with errors like:
f:\lua53.exe: F:\\mesh2obj.lua:13: bad argument #2 to 'su' (string expected, got nil)
stack traceback:
[C]: in function 'string.unpack'
F:\\mesh2obj.lua:13: in local 'uint32'
F:\\mesh2obj.lua:38: in local 'convert'
F:\\mesh2obj.lua:117: in main chunk
[C]: in ?
How I can get those *.dat fles, so I can convert it by your lua script? Or how to do it just with my OBJ files which I already have extracted?
I have exported OBJ files in AssetBundleExtractor by selecting those files by its type (mesh) then going to Plugins->export to .obj
thx
mesh2obj.lua read "real" chunk name from *.dat and save OBJ with this name.
I missed a couple of things there, but in general it should be clear.