IQM models made from multiple exported meshes seem to crash UDB when rendering in-editor.
UDB has been crashing whenever i try to get it to render iqm models that were made up of multiple meshes. At least, that's the only consistent element i can find in these many crashes.
This model is made from multiple meshes rigged to a skeleton. i export as fbx from maya, convert to IQM via Noeis, and load them into UDB via a pk3/folder. One of two things happen next; i recieve this warning message, but am able to continue using the editor, or i receive no warning, and the ediitor gives me this error when i attempt to go into visual mode with enhanced rendering enabled.
I have also done this process in blender from scratch, exporting IQM from blender, exporting an fbx from maya to blender to IQM, ect. All methods lead to the same results.
This error, however, does not happen if the mesh in question only had one part. this IQM animated mesh only contained the core body mesh, and did not give me errors.
All of these models do run in-engine. If i run UDB without going into visual mode, the game will play fine and they will render fine. They also spawn in-game without issue (the smaller blue lady is the fully modeled version of the body-mesh only version seen above. this fully modeled version will crash the editor)
I know this hasn't always been a problem. Disdain uses this same multi-mesh iqm modeling, and the various IQM templates and git test projects all work this same way as well. this is ontop of videos of folks importing mixamo models, which are made up of multiple parts. https://forum.zdoom.org/viewtopic.php?t=76766 https://www.youtube.com/watch?v=A2IRmnh5KXY
I've been dealing with this issue for days, and i do not know what else could be causing this. I am uploading a PK3/ZIP that contains models that spawn in-game, but crash the editor. The two names are "gun2out" and "gun21keyout", i tested this right before uploading. IQMCrashExample_2_23_2024.zip
I do not have this issue when using MD3s.
This is also not done using the method where you create one character by loading in multiple models/skins. Nor is this using MODELSASATTACHMENTS. None of the previous examples seemed to need it.
When running IQMTest(listed above) in editor, the iqm models do not render, and as such nothing crashes. the models become visible when playing.
EDIT: okay like 20 minutes later i laoded it up again, waited like a minute, toggled the view modes a bunch, and then some of them showed up. not all, but some. i have no idea why, as i also exproted the same gun model in this demo from it's included blend file and was hit with crashes.
I have run this on old gzdoom, the current 4.11 dev release, the latest VKdoom git build, and the latest nightly 4.12_480 gzdoom. same results.
the following is the crash report from when UDB attempts to render the multi-meshesd IQM model. I've seen it many times and it looks the same each. I don't exactly know what an index error would mean in this case, but it sounds like it's seeing more models than it knows what to do with?
SYSTEM INFO OS: Microsoft Windows 11 Pro GPU: AMD Radeon RX 6600 UDB: R4157 Platform: x64
EXCEPTION DETAILS Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) at CodeImp.DoomBuilder.Rendering.Renderer3D.RenderModels(Boolean trans, List`1 lights) in c:\build\UltimateDoomBuilder\Source\Core\Rendering\Renderer3D.cs:line 1687 at CodeImp.DoomBuilder.Rendering.Renderer3D.FinishGeometry() in c:\build\UltimateDoomBuilder\Source\Core\Rendering\Renderer3D.cs:line 474 at CodeImp.DoomBuilder.BuilderModes.BaseVisualMode.OnRedrawDisplay() in c:\build\UltimateDoomBuilder\Source\Plugins\BuilderModes\VisualModes\BaseVisualMode.cs:line 1718 at CodeImp.DoomBuilder.Windows.MainForm.RedrawDisplay() in c:\build\UltimateDoomBuilder\Source\Core\Windows\MainForm.cs:line 1033 at CodeImp.DoomBuilder.VisualModes.VisualMode.OnProcess(Int64 deltatime) in c:\build\UltimateDoomBuilder\Source\Core\VisualModes\VisualMode.cs:line 1352 at CodeImp.DoomBuilder.BuilderModes.BaseVisualMode.OnProcess(Int64 deltatime) in c:\build\UltimateDoomBuilder\Source\Plugins\BuilderModes\VisualModes\BaseVisualMode.cs:line 1639 at CodeImp.DoomBuilder.Windows.MainForm.processor_Tick(Object sender, EventArgs e) in c:\build\UltimateDoomBuilder\Source\Core\Windows\MainForm.cs:line 4692 at System.Windows.Forms.Timer.OnTick(EventArgs e) at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)