Dylancyclone / VMF2OBJ

Convert source-engine VMF files into OBJ files with materials (including brushes, displacements, entities, and models)
MIT License
109 stars 6 forks source link

Missing Materials on Gmod Map #50

Open MaxineMaxie opened 6 months ago

MaxineMaxie commented 6 months ago

I tried to convert a map that I made for gmod using the default materials but the program was unable to find a ton of the materials Upon looking further I found the materials but they aren't packaged into a vpk and adding it as a folder doesn't work either, it still can't find it I know that nobody is updating this program or helping people with issues anymore, but any help would be appreciated Thanks!

Here's the log in case it helps:

Starting VMF2OBJ conversion v2.0.0 [1/5] Reading VPK file(s) and custom content... [2/5] Reading geometry... [3/5] Writing brushes...

Missing Material: concrete/concretefloor008a

Missing Material: plaster/plasterwall044b

Missing Material: props/carpetfloor004a

Missing Material: plaster/plasterwall044b

Missing Material: props/carpetfloor004a

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: props/carpetfloor004a

Missing Material: glass/glasswindow001b

Missing Material: glass/glasswindow001b

Missing Material: glass/glasswindow001b

Missing Material: tile/tilefloor003a

Missing Material: concrete/concretefloor016a

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: glass/glasswindow001b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: props/carpetfloor004a

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: glass/glasswindow001b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: props/carpetfloor004a

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: concrete/concretefloor016a

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Missing Material: brick/brickwall052b

Missing Material: plaster/plasterwall044b

Writing Brushes... 100% [===================] 216/216 (0:00:03 / 0:00:00) 72.0/s [4/5] Processing entities...

Processing entities... 100% [======================] 2/2 (0:00:00 / 0:00:00) ?/s [5/5] Cleaning up... Conversion complete! Output can be found at: C:\Users\Cassie Cat\Downloads

Dylancyclone commented 5 months ago

Hello! Sorry about the long delay, life reared it's ugly head for a bit. I'm still alive, but have much less time to work on the project

Just to make sure, when you added the extra resources, did you add the "materials"/"models" folders directly, or the folder that contains those two folders?

MaxineMaxie commented 5 months ago

I added the folders directly since the folder they were contained in had VPKs (fallbacks_000, fallbacks_dir, garrysmod_000, garrysmod_001, garrysmod_002) that caused an error (SEVERE: Fatal error: java.lang.StringIndexOutOfBoundsException: Range [0, -1) out of bounds for length 26) Which I found out through a different issue page. I tried copying the material and model folders into an empty folder and using that, but that also left the program unable to find the materials.

Dylancyclone commented 5 months ago

Make sure you're only adding the _dir.vpk files. That file points to all the other ones ("000", "001")

MaxineMaxie commented 5 months ago

The issue is that GMod stores most of its assets in regular folders as opposed to VPKs, so I need to either find a way to put them into a VPK or add them to the resource list as just folders with the files in them.

Dylancyclone commented 5 months ago

Remember you can also import assets in regular folders by selecting "Add Folder." This will add all the assets in the "materials"/"models" folders.

custom-content/        <----- Select this folder
├── materials/         <----- DON'T select this folder
│   └── models/
│       └── props/
│           ├── clock.vmt
│           └── clock.vtf
└── models/            <----- DON'T select this folder
    └── props/
        ├── clock.dx80.vtx
        ├── clock.dx90.vtx
        ├── clock.mdl
        ├── clock.phy
        ├── clock.sw.vtx
        └── clock.vvd

So for gmod you can add

[...]/steamapps/common/GarrysMod/garrysmod/garrysmod_dir.vpk
[...]/steamapps/common/GarrysMod/sourceengine/hl2_misc_dir.vpk
[...]/steamapps/common/GarrysMod/sourceengine/hl2_textures_dir.vpk
[plus any other mounted games like cs:s]

And then the folder itself

[...]/steamapps/common/GarrysMod/garrysmod/
MaxineMaxie commented 5 months ago

I tried that and it threw this error image Any idea why?

P.S. Thanks for being patient with me, I really appreciate it

Edit: I just noticed I had an incorrect VPK added, but swapping out for the right one still threw the same error

MaxineMaxie commented 4 months ago

Hello? I still haven't gotten it to work :/

MaxineMaxie commented 3 months ago

...Hello?

Dylancyclone commented 3 months ago

Hi sorry again for the delay. My garrysmod install seems to have a different layout for its files (the materials that were missing in your log are in the vpk files for me). If you could, try moving/copying the assets (the materials,models,etc), from the garrysmod folder to some other "custom_content" folder and then include that folder. The program might be getting caught on some invalid file somewhere else in your "garrysmod" folder

MaxineMaxie commented 3 months ago

Well, we have progress, now we're getting a different geometry-based error:

Starting VMF2OBJ conversion v2.0.0 [1/5] Reading VPK file(s) and custom content... [2/5] Reading geometry... SEVERE: Fatal error: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 1772 path $.solids[0].sides[0].null image

Dylancyclone commented 3 months ago

Ack it doesn't like something in the map file itself now. Is it possible to upload the VMF? That way I can take a closer look?

MaxineMaxie commented 3 months ago

Yea, sure! https://drive.google.com/file/d/1CRx7JBiv4rndlqDJI5LTELHMsKdcfR7D/view?usp=sharing

Dylancyclone commented 3 months ago

Thanks, I am extremely busy the next few days but I will take a look once I get a chance

MaxineMaxie commented 3 months ago

Oh! I AM using Hammer++, do you think that could be part of the issue? Like should I be opening and saving in regular Hammer first or does it not matter?

Dylancyclone commented 3 months ago

That could be part of it. Some other people have reported that saving it in original hammer then trying to convert it works, I haven't gotten a chance to see how Hammer++ saves the files differently

Dylancyclone commented 3 months ago

Just wanted to let you know, in a stroke of some of the greatest timing ever, the motherboard of my personal computer has died and I'm working on getting a replacement

So I'm sorry there's going to be some more delay before I can properly take a look at this haha.

In the mean time definitely try opening the map in regular hammer and resaving it, that seemed to fix the issue for some other people

MaxineMaxie commented 2 months ago

Alright, some quick troubleshooting shows that the file out of Hammer++ fails to read geometry and the file out of Hammer reads geometry, but fails to find any of the materials, meaning even if Hammer++ worked it would still fail due to it not finding any textures.

Dylancyclone commented 2 months ago

Hi sorry for the delay. After getting a replacement motherboard and getting everything back up, I found my CPU was also dying, causing crashes and actually corrupted my windows installation. I've filed an RMA request and should hopefully get a replacement CPU soon

MaxineMaxie commented 2 months ago

It's all good I wish you the best on your computer repair May the deals be ever in your favor

Dylancyclone commented 1 month ago

Heyo, I've pushed up a new version that fixes the geometry error when trying to decompile any VMF file saved in Hammer++. That should fix your original issue https://github.com/Dylancyclone/VMF2OBJ/releases/tag/v2.0.1

It looks like everything succeeds except two missing materials, which I can't find anywhere in garrysmod, css, or hl2. Are they custom materials?

Missing Material: innertex/woodwall
Missing Material: concrete/concrete_bts_ceiling001a

image image

Lemme know if you have any issues

MaxineMaxie commented 1 month ago

I think at one point long ago I may have imported some assets from Portal 2, I guess that could be it?

Dylancyclone commented 1 month ago

concrete/concrete_bts_ceiling001a is definitely from Portal 2, but I can't find innertex/woodwall, I don't even recognize innertex, not sure what that is or where it comes from

MaxineMaxie commented 1 month ago

So I guess I should just see what I can replace those textures with?

Dylancyclone commented 1 month ago

Yup you can do that. "woodwall" sounds like a pretty generic name, and there seems to be other wood textures used in the map so it might be easy to find an alternative if you can't find where that texture came from

Lemme know if you have any other questions!