• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

MCX ignoring hinge points

Messages
107
Country
us-virginia
So I am having a new issue with MCX I downloaded the latest version of MCX 1.8.250323 and while trying to give a small demo on making animations using a combination of blender and MCX I noticed that MCX is ignoring the hinge points I am assigning in blender...This process has always worked for me in the past:

1. Export parts I need into a collada .dae format
2. Open parts in blender, as .dae and in object mode set the "object origin"
3. Export from blender back to .dae with origin (hinge point) set
4. Open in MCX and use the add animation feature to animate the part I need animated...

But what has been happening as of today is the origin (hinge point) I set in blender is being ignored and when I add an animation in this case a rotation the part is rotating about the main center access... Not sure what has changed... Thanks
 
Hi,

Did you try if the stable release 1.7 of MCX does still work correctly for this? Then we can isolate if the issue is in the COLLADA export or in the import.
 
Hey Arno,

So I just tried MCX 1.7 stable and having the same issue with 1.7 stable as well... Also another experiment I tried importing a part (gear door) that had a hinge point into blender then re-exporting it... While I could see the existing hinge point in blender; once I re-exported the hinge point MCX ignored it... But re-importing it into blender again I can still see the hinge point... Thanks
 
Just so you can see some examples...

Here is the gear door in blender, as you can see the hinge (origin) point is clearly set:

gear door hinge.JPG


But in MCX when I set a rotational animation it is rotation about the central axis not the hinge point as indicate by the axis and the odd motion


mcx hinge ignored.JPG


as a further demo of this here is a Phantom wing I was trying to use to demo these concepts to some friends earlier today... Here you can see what the wing tip looks like in blender

wing tip hinge.JPG


Here it is again in MCX hinge point ignored and rotating about the central axis

MCX wing tip hinge ignored.JPG



This is what I normally achieve using this method:

Phantom wing unfolded

phantom wing unfolded.JPG


Phantom wing folded:

phantom wing folded.JPG
 
Some further data on the problem... I noticed I had been getting some crashes of MCX lately when opening .dae files... Here are the error messages I am getting... I have tried using both a legacy blender 3.6 and the most current blender 4.4...

Faulting application name: ModelConverterX.exe, version: 1.7.0.0, time stamp: 0x6751fa16
Faulting module name: assimp.dll, version: 5.0.1.0, time stamp: 0x5e9775ad
Exception code: 0xc0000005
Fault offset: 0x0000000000026084
Faulting process id: 0x2624
Faulting application start time: 0x01dba405897fe2d4
Faulting application path: C:\Users\\Documents\p3d\MCX\MCX 1.7 stable\ModelConverterX.exe
Faulting module path: C:\Users\\Documents\p3d\MCX\MCX 1.7 stable\assimp.dll
Report Id: fb44bdd4-4fc3-4fc7-8c65-108efcbb4313
Faulting package full name:
Faulting package-relative application ID:

Application: ModelConverterX.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
at Assimp.Unmanaged.AssimpLibrary.ApplyPostProcessing(IntPtr, Assimp.PostProcessSteps)
at Assimp.AssimpContext.ImportFile(System.String, Assimp.PostProcessSteps)
at ASToFra.Object.Reader.AssimpReader.ReadFormat(System.String, System.Collections.Generic.List`1<System.String>)
at ASToFra.Object.Reader.ObjectReader.Read(System.String, System.Collections.Generic.List`1<System.String>)
at ASToFra.Object.Reader.AllObjectReader.ReadScenery(System.String)
at ASToFra.Object.Reader.AllObjectReader.bw_DoWork(System.Object, System.ComponentModel.DoWorkEventArgs)
at System.ComponentModel.BackgroundWorker.OnDoWork(System.ComponentModel.DoWorkEventArgs)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(System.Object)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr, System.Object[], System.Object, System.Object[] ByRef)
at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()


Faulting application name: ModelConverterX.exe, version: 1.7.0.0, time stamp: 0x6751fa16
Faulting module name: ntdll.dll, version: 10.0.19041.5438, time stamp: 0xab0dece3
Exception code: 0xc0000374
Fault offset: 0x00000000000ff3c9
Faulting process id: 0x63f8
Faulting application start time: 0x01dba4057d279fee
Faulting application path: C:\Users\Dr. Mason A. Curling\Documents\p3d\MCX\MCX 1.7 stable\ModelConverterX.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: b247a706-80e0-4b1a-afc7-aaeeb68ebf6d
Faulting package full name:
Faulting package-relative application ID:


Fault bucket 2302218778779991564, type 4
Event Name: APPCRASH
Response: Not available
Cab Id: 0

Problem signature:
P1: ModelConverterX.exe
P2: 1.7.0.0
P3: 6751fa16
P4: assimp.dll
P5: 5.0.1.0
P6: 5e9775ad
P7: c0000005
P8: 0000000000026084
P9:
P10:

Attached files:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERB3E0.tmp.mdmp
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERB52A.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERB559.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERB55D.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERB58D.tmp.txt

These files may be available here:
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_ModelConverterX._c9e63a2c59e5b6ce0448eb7f07874a1ad6a25_6c76fe87_262f5869-9362-4ec3-a7db-c21e91707d6b

Analysis symbol:
Rechecking for solution: 0
Report Id: 7ad3abfe-a594-4b00-b5a9-a6dd9457d097
Report Status: 268435456
Hashed bucket: 1158f2c1b00796d1aff31fc8186a3e0c
Cab Guid: 0

Faulting application name: ModelConverterX.exe, version: 1.7.0.0, time stamp: 0x6751fa16
Faulting module name: assimp.dll, version: 5.0.1.0, time stamp: 0x5e9775ad
Exception code: 0xc0000005
Fault offset: 0x0000000000026084
Faulting process id: 0x63f8
Faulting application start time: 0x01dba4057d279fee
Faulting application path: C:\Users\\Documents\p3d\MCX\MCX 1.7 stable\ModelConverterX.exe
Faulting module path: C:\Users\\Documents\p3d\MCX\MCX 1.7 stable\assimp.dll
Report Id: 7ad3abfe-a594-4b00-b5a9-a6dd9457d097
Faulting package full name:
Faulting package-relative application



Application: ModelConverterX.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
at Assimp.Unmanaged.AssimpLibrary.ApplyPostProcessing(IntPtr, Assimp.PostProcessSteps)
at Assimp.AssimpContext.ImportFile(System.String, Assimp.PostProcessSteps)
at ASToFra.Object.Reader.AssimpReader.ReadFormat(System.String, System.Collections.Generic.List`1<System.String>)
at ASToFra.Object.Reader.ObjectReader.Read(System.String, System.Collections.Generic.List`1<System.String>)
at ASToFra.Object.Reader.AllObjectReader.ReadScenery(System.String)
at ASToFra.Object.Reader.AllObjectReader.bw_DoWork(System.Object, System.ComponentModel.DoWorkEventArgs)
at System.ComponentModel.BackgroundWorker.OnDoWork(System.ComponentModel.DoWorkEventArgs)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(System.Object)
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr, System.Object[], System.Object, System.Object[] ByRef)
at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()


Fault bucket 2131741686124939715, type 5
Event Name: FaultTolerantHeap
Response: Not available
Cab Id: 1350573635618537239

Problem signature:
P1: ModelConverterX.exe
P2: 1.7.0.0
P3: 6751FA16
P4: ffffbaad
P5:
P6:
P7:
P8:
P9:
P10:

Attached files:
\\?\C:\Windows\SERVIC~1\LOCALS~1\AppData\Local\Temp\FTH572A.tmp\fthempty.txt
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER573B.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER578A.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER5799.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER57C9.tmp.txt
\\?\C:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp\WER5A69.tmp.WERDataCollectionStatus.txt

These files may be available here:


Analysis symbol:
Rechecking for solution: 0
Report Id: 8517a1ab-8b2c-48f1-b0a2-0fb2b284efe5
Report Status: 268435464
Hashed bucket: cd73677b840a6e1f5d9577c4e25e89c3
Cab Guid: 880b7cc6-dc4e-471b-a2be-3390e20cff17
 
Ok so I found an answer to one issue... The hinge points are being ignored with the Object Model Settings > Optimize > Disable Optimize set to false.... I got MCX to acknowledge the hinge point again by setting disable optimize to true.... Odd that the optimize function is causing the hinge points to be ignored...


Some other odd things...

1. So to get a rotational animation to work properly with hinge points again... 1. I had to create the animation in the .dae format; with parts optimize disabled... If I exported the part to .mdl even with optimize disabled it would ignore the hinge point...

2. If I created the animation with optimize disabled then exported it to .mdl it would continue to work fine... if at that point I re-enabled the optimize parts and exported it again; and re-imported it the rotation about the hinge point would still work...


So steps:

1. Open .dae disable optimize set to "true" create animation and export as .mdl

2. Open .mdl and check animation working properly then set disable optimize to false re-export

3. Open .mdl and it works properly...

So there is something in the parts optimizer causing a quirky issue...
 
Last edited:
Those crashes seem to happen in the assimp library that is used to read DAE files. If you have an example file that crashes I can take a look.

It's normal that for non animated parts the hinge point is removed by the optimization. Since it's not used, the geometry can be optimized by ignoring it. That's similar to what xtomdl does on export to MDL.
 
Here are some of the parts I was messing with yesterday as well as the other day...

I was getting crashes also when trying to isolate some of the wing and bomb parts and export to .dae for modification... To get that to work I had to go back to suing MCX 1.6.0.... But for yesterday's demo I was just using the wing tip parts to show how to add animations in MCX using hinge points... Guess I never noticed that having optimization on when re-importing the modified .dae part for animation makes it ignore the hinge points... Is there a way to make MCX keep hinge points no matter what that setting is? Seems frustrating that for some things I have to have the optimization on (such as auto platforming) but for others must be off (in this case animating a part for scratch with a hinge point)... Thanks
 

Attachments

I will check the DAE file.

There is no way to keep the hinge point with optimizations on. MCX has no way to know which translations you want to use as hinge point and which can be optimized.
 
Out of curiosity why is there no way? I ask because in blender when I got to object > set origin, it only sets a single "origin" point / node; never more than one for a part... I would assume that single "origin" point would somehow be specially marked by blender as the "one and only" origin for that model part? no? and since MCX can see that marked origin point without parts optimized is there no way to specifically exclude that?
 
Hi,

What the optimization does is that it tries to combine all model parts that have the same material and no animations into one model part. This is also how XtoMDL works when you compile a MDL file. This reduces the amount of drawcalls and therefore the performance. When you disable collapse modelparts in the options (I think that will give the same result as the disable optimization you now did), then MCX will not do this behaviour. There is not really a middle way between optimization and no optimization. MCX can't know if certain parts will be animated by one and others can be combined.
 
Well I always keep collapse parts disabled (I personally don't like that feature)... But it this case even when I opened a .dae part by itself (with collapse parts disabled), I still had to have the optimization disabled as well for it to accept the hinge point not just disabling the collapse parts... thanks
 
I tried the COLLADA files you attached, but none of them gives a crash/error. I tried it both in version 1.7 and in the development release.
 
Back
Top