Planimeter / game-framework

Planimeter Game Framework - LuaJIT FFI-based game development framework for Lua
MIT License
89 stars 3 forks source link

`getMaterialTexture` in model.lua fails to to build filenames correctly #9

Open andrewmcwatters opened 2 years ago

andrewmcwatters commented 2 years ago

Describe the bug getMaterialTexture in model.lua:ln:105 fails to build correct filenames to material textures. This is caused by outdated assimp bindings causing the first 4 characters of filenames to be missing.

To Reproduce Steps to reproduce the behavior:

  1. Run ./lgf
  2. See error

Expected behavior Running ./lgf should not produce crashes. getMaterialTexture should provide correct filenames.

Additional context Stack traceback:

luajit: ...mcwatters/Planimeter/lgf/lua/framework/graphics/mesh.lua:27: not found
stack traceback:
    [C]: in function 'error'
    ...cwatters/Planimeter/lgf/lua/framework/graphics/image.lua:29: in function 'constructor'
    /Users/andrewmcwatters/Planimeter/lgf/lib/class.lua:130: in function 'newImage'
    ...mcwatters/Planimeter/lgf/lua/framework/graphics/mesh.lua:27: in function 'constructor'
    /Users/andrewmcwatters/Planimeter/lgf/lib/class.lua:130: in function 'processMesh'
    ...cwatters/Planimeter/lgf/lua/framework/graphics/model.lua:193: in function 'processNode'
    ...cwatters/Planimeter/lgf/lua/framework/graphics/model.lua:219: in function 'constructor'
    /Users/andrewmcwatters/Planimeter/lgf/lib/class.lua:130: in function 'newModel'
    /Users/andrewmcwatters/Planimeter/lgf/main.lua:55: in function 'load'
    ...rs/andrewmcwatters/Planimeter/lgf/lua/framework/init.lua:89: in function 'main'
    ...rs/andrewmcwatters/Planimeter/lgf/lua/framework/init.lua:272: in main chunk
    [C]: at 0x0100c371d0

Filenames created:

models/DamagedHelmet/gltf/ult_AO.jpg
models/DamagedHelmet/gltf/ult_emissive.jpg
models/DamagedHelmet/gltf/ult_albedo.jpg
models/DamagedHelmet/gltf/ult_normal.jpg

Filenames expected:

models/DamagedHelmet/gltf/Default_AO.jpg
models/DamagedHelmet/gltf/Default_emissive.jpg
models/DamagedHelmet/gltf/Default_albedo.jpg
models/DamagedHelmet/gltf/Default_normal.jpg

See also https://github.com/LWJGL/lwjgl3/issues/516

PetriKiviniemi commented 3 months ago

Hey, you ever managed to resolve this?

andrewmcwatters commented 3 months ago

@PetriKiviniemi I think I just need to update the bindings, actually. I can try to schedule this for this evening. This just requires an update to https://github.com/Planimeter/lassimp.

PetriKiviniemi commented 3 months ago

Hmm sorry I got the threads confused. I am struggling with original assimp on my own custom game-engine. I have the same issue, of where 4 chars are being cut out, even with latest assimp. Was thinking of doing some patching to the assimp library itself, but is there some better way?

andrewmcwatters commented 3 months ago

Ah I see, you're using lwjgl and it is suffering from the same issue. You may be better off not patching assimp, and writing your own utility function to expand the filenames expected instead.

I'm surprised that this would still be occurring with the latest version of assimp.

andrewmcwatters commented 3 months ago

@PetriKiviniemi It looks like it should have been fixed. See https://github.com/assimp/assimp/issues/3264. The latest version is now 5.4.0. I assume this was addressed quite some time ago, but I haven't checked in the latest version since about 6 years ago, back when 4.1.0 had this issue.

Time flies! Let me know if I can help you, even though this isn't related to Planimeter Game Framework!