Search Unity

[RELEASED] Mesh Combine Studio 2 (Boost Performance)

Discussion in 'Assets and Asset Store' started by eagle555, Oct 24, 2017.

  1. Dknighter2

    Dknighter2

    Joined:
    Aug 17, 2014
    Posts:
    44
    Ok so it won't work if I use realtime and baked?
     
  2. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Unfortunately it's not possible to copy Realtime GI in Unity, they don't expose it. Which cell size do you use? Also did you try to use a lower lightmap scale in the MCS Inspector like 0.5?

    We had issues as well with Unity lightmap baking, we switched to Bakery GPU Lightmapper and works great for us.
     
    hopeful likes this.
  3. Dknighter2

    Dknighter2

    Joined:
    Aug 17, 2014
    Posts:
    44
    Ok that's a shame. The last bake attempt I did was using those settings in the last screenshot I posted here, it was 32 cell size but I tried increasing and decreasing it and nothing really changed. I tried rebaking with a lot of different lighting and MCS settings and was getting the same issue every time, changing the lightmap scale also did nothing. It seems like it's definitely a Unity issue so I'll just have to look into using this asset in the future and also look into using Bakery as I've had my eye on that for a while now.
     
  4. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Yes it's likely an issue with Unity's lightmapping. We also had light leaking/seams and such, which Bakery solved...Also Bakery is much faster than Unity GPU baking.
     
    hopeful likes this.
  5. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Hi,

    Here's the update with the Dynamic Objects feature you asked for. Only thing to do is putting 'Combine Mode' to 'Dynamic Objects':
    upload_2020-7-2_21-13-46.png

    MCS will see each child of the Parent Search GameObject as a separate dynamic object. And the combined meshes are parented as a child of each dynamic object. Also reverting works as with static, so can easily revert back with 1 click.

    If you re-use the same dynamic objects, it's better to combine first and then instantiate them as otherwise each of them will use separate memory for the combined meshes instead of shared.

    Here's a quick demo build, I put together with dynamic objects, makes a huge difference in performance ;)
    https://www.dropbox.com/s/zd4nq5elewjab8x/MCS_DynamicDemo.zip?dl=0
     

    Attached Files:

  6. PunkPuffin

    PunkPuffin

    Joined:
    Jun 17, 2018
    Posts:
    14

    Thanks that does seem to make more sense upon first reading the setting.
     
  7. PunkPuffin

    PunkPuffin

    Joined:
    Jun 17, 2018
    Posts:
    14
    @eagle555
    Hi,

    I have another query relating to combining materials. I think I'm confused again here. So what I want to try and do is boiled down to this.

    Say I have 2 cubes. 1 with a red material and one with a yellow material. When I combine them I wanted a single mesh where the cubes are still red and yellow.

    Same as this tool seems to do with Sub Meshes and multiple materials. Not sure the frame rate performance impact of that compared to yours. It also has a lot less features.

    https://assetstore.unity.com/packages/tools/modeling/mesh-combiner-157192

    Is it possible to do what I was trying to do?
     
    Last edited: Jul 3, 2020
  8. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    I didn't choose the submesh multiple material approach as then meshes will exceed faster the max 16-bit 65k vertex limit. If you have 2 materials in 1 mesh with 2 submeshes, it's still 2 draw calls. As submeshes are rendered one by one.

    32-bit meshes are more expensive to render as they use double memory bandwidth for the trianlge indices.

    So if you have like 1500 cubes (1500 x 26 vertices = 45k vertices) with red material and 1500 cubes yellow material it's faster to combine each in a separate mesh. So MCS will create 2 meshes (2 draw calss) of 45k verts each, while the submesh approach would need 2 meshes with total of 4 submeshes (4 draw calls) or one 32-bit mesh with 2 submeshes (2 draw calls). But a 32-bit mesh is more expensive and also some platforms don't support them...And e.g. if you use 4 shadow cascades the meshes need to be rendered 5 times...And 32-bit being slower will impact...

    So my approach will lead to better frame-rates...

    And on top meshes need to be combined cell based otherwise it will kill the performance as culling breaks. Which leads to vertex and triangle count increases in the Unity stats window.
     
    Last edited: Jul 3, 2020
  9. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Thanks! But I have few questions.

    I have structure like this

    Main
    -- System 1
    --- Part 1
    --- Unit 1
    --- Obj 1
    --- Obj 1_1
    --- Obj 1_1_1
    --- Obj 1_1_2
    --- Obj 1_1_3
    --- Obj 1_2
    --- Obj 1_3
    --- ...
    --- Obj 2
    --- Obj 3
    ....
    --- Unit 2
    --- Unit 3
    ....

    --- Part 2
    --- Part 3
    ....
    -- System 2
    -- System 3
    ...

    After combine I need something like this

    Main
    -- System 1
    --- Part 1
    --- Unit 1 //I need this objects and scripts on it
    --- Merged object mat 1 //I don't care about this merged meshed
    --- Merged object mat 2 //I don't care about this merged meshed
    ....
    --- Unit 2
    --- Unit 3
    ....

    --- Part 2
    --- Part 3
    ....
    -- System 2
    -- System 3
    ...

    So my first question - Can I set for MeshCombiner not only one parent, but array of parents? Can I create array of parent objects to merge and send it to MeshCombiner?


    I tried your new package, but dont understand how it works. For example. I set Main as parent in MeshCombiner, and I get

    Main
    -- System 1
    --- Part 1
    --- Unit 1
    --- Obj 1
    --- Obj 1_1
    --- Obj 1_1_1
    --- Obj 1_1_2
    --- Obj 1_1_3
    --- Obj 1_2
    --- Obj 1_3
    --- ...
    --- Obj 2
    --- Obj 3
    ....
    --- Unit 2
    --- Unit 3
    ....

    --- Part 2
    --- Part 3
    ....
    -- System 2
    -- System 3
    -- Combined
    -- Combined
    -- Combined
    -- Combined
    -- Combined
    -- Combined

    It's ok I guess.
    But if I set Obj 1 in MeshCombiner, I get same hierarchy as above. But, It supposet to be like

    Main
    -- System 1
    --- Part 1
    --- Unit 1
    --- Obj 1
    --- Obj 1_1
    --- Obj 1_1_1
    --- Obj 1_1_2
    --- Obj 1_1_3
    --- Obj 1_2
    --- Obj 1_3
    -- Combined
    -- Combined
    -- Combined
    -- Combined

    --- Obj 2
    --- Obj 3
    ....
    --- Unit 2
    --- Unit 3
    ....

    --- Part 2
    --- Part 3
    ....
    -- System 2
    -- System 3

    If I move Obj 1 to root and start MeshCombiner I get

    --- Obj 1
    --- Obj 1_1
    -- Combined
    --- Obj 1_2
    -- Combined
    --- Obj 1_3
    -- Combined

    And It's ok.
    I just want to see combined objects inside Parent object.

    Or maybe I'm doing somethig wrong?

    Thanks for help!
     
  10. PunkPuffin

    PunkPuffin

    Joined:
    Jun 17, 2018
    Posts:
    14
    some of that went over my head but I get the gist of it.

    performance is the main thing so thank you for the detailed reply
     
  11. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    With Dynamic Objects combine mode MCS expect it to be like this:

    GameObject Parent:
    - Dynamic GameObject 1
    - Dynamic GameObject 2
    - Dynamic GameObject 3
    - etc.
    A dynamic object can have any amount of children with meshes, the combined meshes will be a child of the Dynamic Object.

    I could make an array of parents possible yes. So basically your `Unit` has all dynamic objects under it?
     
  12. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    In this example no. I want to create array of units myself, and send this array to MeshCombiner, to combine Unit objects separetely for each Unit. In this example I don't care what located inside Unit and how it looks, I just know that it some Renderers which I want to merge and optimize.
     
  13. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Oki so you want to send an array of Dynamic Objects or an array of Parent GameObject with Dynamic Objects as children?
     
  14. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Array of Parent GameObjects. For each Parent combine all it's childs and put result back into Parent. For me it's most flexible option because I can use any search options I can imagine.
     
  15. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Oki I will implement this tomorrow for you.
     
  16. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Hi Everyone,

    Does anyone of you have issues that the MCS Inspector is flickering and the foldouts of the sections not working correctly? Someone reported this on U2019.3.15, but on my side it's working fine...
     
  17. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    I have no problem with it. It's ok for me.
     
  18. franky_li

    franky_li

    Joined:
    Aug 8, 2016
    Posts:
    163
    No problem with 2019.4.1
     
  19. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Oki thanks. He tried in an empty project and works fine, seems to be caused by another Asset. Really curious which one as no one for 2.5 years since release reported this issue.
     
  20. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Hi Everyone,

    I just submitted version 2.85 to the Asset Store. If you haven't done a review, feel free to do. Would be great if I could recover the 5 star rating, only 12 more 5 stars are needed for it.

    Mesh Combine Studio 2.85

    Features:
    - Multiple search parents.
    upload_2020-7-6_8-44-32.png

    - Fully working Dynamic Objects combining with new example scene.
    upload_2020-7-6_8-45-11.png

    - New static LOD Group example scene.
    - New mixed example scene, with static + lod group + dynamic objects.

    Improvements:
    - Improved Inspector.
    upload_2020-7-6_9-22-31.png
    - Inspector width can be smaller now without horizontal scrollbar appearing.
    - Inspector keeps showing Found Objects stats after recompiling.

    Fixes:
    - MeshExtension class now has now the MeshCombineStudio namespace in case of another class with the same name it would show errors.
     
    Last edited: Jul 6, 2020
  21. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Hi! I made some tests.

    Parent array works well. But still not understand some things. I have

    Parent 1
    --Obj 1
    ----Obj 1_1
    ----Obj 1_2
    Parent 2
    --Obj 2
    ----Obj 2_1
    ----Obj 2_2

    I want
    Parent 1
    --Combined 1
    Parent 2
    --Combined 2

    If I set in options OneDynamicObject, then all combine result inside MeshCombiner. If I set in options DynamicObjects, then I get

    Parent 1
    --Obj 1
    ----Obj 1_1
    -------Combined 1
    ----Obj 1_2
    -------Combined 1
    Parent 2
    --Obj 2
    ----Obj 2_1
    -------Combined 1
    ----Obj 2_2
    -------Combined 1

    What settings I must set to get

    Parent 1
    --Combined 1
    Parent 2
    --Combined 2
    ?

    And one more thing, that I'm not sure about. Then I press Play in Unity, and select MeshCombiner object things become very laggy. In Editor mode it's ok. Not sure is it because new MeshCombiner release or not.

    Now my parent array contains about 200 elements, If it's important. Then I use OneDynamicObject option my batched become 2000 instead of 9000 by default. It's awesome!

    But still not understand how to create separete combine result for each Parent.
     
  22. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    You need to choose combine mode 'Dynamic Objects'. What it needs is:

    Parent 1:
    - Dynamic Object 1
    - Dynamic Object 2
    - Dynamic Object 3

    Parent 2:
    - Dynamic Object 1
    - Dynamic Object 2
    - Dynamic Object 3

    When combined:

    Parent 1:
    - Dynamic Object 1
    Combined mesh​
    - Dynamic Object 2
    Combined mesh​

    etc.

    The combined mesh is put as a child of each dynamic object, because you can have scripts, colliders, rigidbody that move the original dynamic object and that needs to keep working. Take a look at the dynamic example scene I included...
     
  23. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    I tried your example.
    1. I have same issue with MeshCombiner Inspector - if it shown during runtime things become very laggy.
    2.
    I created object like

    GameObject
    --Cube
    --Cylinder

    I put GameObject to ParentsArray. As result I get:

    GameObject
    --Cube //Disabled renderer
    ----CombinedMesh
    --Cylinder //Disabled renderer
    ----CombinedMesh

    How I can get result like this:

    GameObject
    --Cube //Disabled renderer
    --Cylinder //Disabled renderer
    --CombinedMesh

    ?
     
  24. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    `I have same issue with MeshCombiner Inspector - if it shown during runtime things become very laggy.`
    Which Unity version are you using?

    You need to put all your dynamic objects in a parent and put that parent in the ParentsArray. Think it's better as e.g. if you have 200 dynamic objects the MCS inspector would get very big...Can make it possible though and also by code.
     
  25. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Unity 2019.3.13f1

    I can't put all objects to parents, because I have 3D model with thousands parts and >10 levels of hierarchy. I can't change it. I need to find parts what I need to merge and merge it to get appropriate FPS. The problem is - if I change model by myself, after next big model update I must change model again. So I want automate this process.
     
  26. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    By the way, in previous version I had no problems with Inspector.
     
  27. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    I think I misunderstood what you needed. If you have a dynamic object with thousands of parts that's indeed very un-optimized. Also each child transform has a little performance overhead, constantly moving thousands of transforms has a big overhead. So lets take a car model as example. Which is dynamic as it can move. Inside it has many static parts which can be combined, but some parts need to stay dynamic, like the wheels, doors. And e.g. the wheels also consists of parts that can be combined. You mean like this?
     
  28. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Oki thanks for telling, will take a look...
     
  29. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Yes, kinda likes this. For example with car, I have a wheel with contains hundred of details. But user don't need it. He want to rollover mouse on wheel and see some description. He don't care about smaller parts. So I want to merge hundred details inside wheel into one big mesh (or few meshes, depends on materails). And do such thing for every wheel and many other parts.
    I want to try to do it in runtime, because if one day I decide that I need to describe some details in wheel, just change parent array in MeshCombiner. I can sacrifice 5-10 seconds on start to optimize meshes in runtime.
     
    Last edited: Jul 6, 2020
  30. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Ah ok so you want to supply the objects you want to combine yourself. But MCS is searching through all the children, so if you want to combine a wheel and inside is a part that is also dynamic and should move and also has children it would be combined as well. So maybe best way to solve this is with attaching a script to each dynamic part, if MCS would find the script in the child it knows it needs to separately combine it. Then just supply the big object to MCS and it will automatically find all dynamic parts and combine those...
     
  31. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Yes. It will be fine too. There is no big difference for me create array of objects to merge, or just mark this objects with some script. Thanks a lot!
     
  32. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Yes but the scripts will prevent from combining dynamic children, so basically you can have many dynamic sub-objects:

    -Car
    -Fuselage
    -Door (dynamic needs script)
    -Door Frame
    -Door Handle
    -Door Mirror (dynamic needs script)
    -Mirror part1
    -Mirror part2​
    -Door Window (dynamic needs script)​

    You understand what I mean? If you would put door + mirror in the MCS parent array, the door will be combined with the mirror, and then the mirror will be combined again, so that would go wrong.

    Oki will implement this for you tomorrow ;) Thanks a lot for the review btw...
     
  33. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Yes, I understand! It's great! Looking forward for new update!)
     
  34. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    I DM'ed you the update and also submitted it to the Asset Store:

    Mesh Combine Studio 2.86

    Features

    - Combine Dynamic Objects with dynamic parts until endless levels.

    Improvements
    - Inspector is always responsive now.

    So basically all you need to do now is assign the 'MCS Dynamic Object' script to the dynamic objects/parts and MCS will do the rest when combining. You can take a look at the dynamic example Scene. I have many rotating parts within the dynamic object, that have their own parts and that have their own dynamic parts.

    Edit: The update is live now on the Unity Asset Store.
     
    Last edited: Jul 7, 2020
  35. inkostyakov

    inkostyakov

    Joined:
    Nov 14, 2016
    Posts:
    48
    Hi! Fast review.

    1. Batches 10000 ->920
    2. FPS 22 ->80
    3. MeshCombineStudio Inspector lag ruring runtime - resolved!

    In first view everything looks too good too be true) Awesome! Thanks a lot!
     
    hopeful and eagle555 like this.
  36. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Wow that's really cool :D
     
  37. Monil

    Monil

    Joined:
    Apr 24, 2012
    Posts:
    102
    Hi,
    I have updated MCS2 to version 2.86 and MCS Caves & Overhangs 1.25, I am doing the first tests and something is not working:

    When I import MCS2 it gives me some errors that disappear once MCS Caves & Overhangs is also imported

    MCS2_Dipendences.jpg

    In the demo Dynamic Object Example does not find the scripts associated with Dynamic Object and Dynamic Part, which one should I put to test the scene?

    MCS2_MissingScripts.jpg
     
    Weblox likes this.
  38. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Thanks for reporting. That's probably because the MCS Caves and Overhangs keyword is still in 'Scripting Define Symbols`. Which is only added by MCS Caves and Overhangs, so that activates some condition code in MCS 2.

    As for the missing script. It was outside the MeshCombineStudio folder, thanks for pointing that out. The fix is in the attachment, will also upload to the Asset Store.
     

    Attached Files:

    Last edited: Jul 7, 2020
    Weblox and Monil like this.
  39. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    Hi @eagle555 - Just wanted to report the same Issues @Monil did. Also the "Remove Overlapping Tris" still doesn't seem to work as intended. Plz see video (Only shot from demo scene)...
     
    Last edited: Jul 19, 2020
  40. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Hi, thanks for reporting. I tried in Unity 2018.4, installed it and downloaded MCS 2 and MCS Caves & Overhangs from the Asset Store and works fine on my side:
    upload_2020-7-7_21-7-46.png

    Did you download the latest MCS Caves & Overhangs? As the issue was there before after a recent update, but then I fixed it the update after it.
     
  41. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    @eagle555 - Yeah, I think I even cleaned the Asset Store Cache for it , but I will try to reimport and report back...;)

    @eagle555 - EDIT: Cleared cash and reimported both latest Versions (MCS2 version 2.86 and MCS Caves & Overhangs 1.25 + the fix), but with no luck. For me it is like in the Video still. I think "Remove Overlapping tris" was alrdy working fine (for me) in MCS 2.7.4, but the "Remove Same Position Triangles" was having an Issue back then ... :eek:
     
    Last edited: Jul 7, 2020
  42. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Can you show a screenshot of your Physics Settings? On my side it's like this:
    upload_2020-7-8_7-38-16.png
     
  43. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    @eagle555 - Yeah ... those are quite different from what I find in my settings. I also have a bunch of additional entries in this Project, from Assets used for testing purposes . I will also try in different Unity Versions now (I dont have the same Version installed, but 2x 2018.4+ and I will 2019 also), and report back what I find...

    Thanks for all your efforts.
     
    Last edited: Jul 19, 2020
  44. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    I disabled `Auto Simulation' and 'Auto Sync Transforms` if that could reproduce the issue, but didn't. Also tried your physics settings now, but it still works fine on my side. Did you combine it in the editor or in play mode? Can you try if it works in an empty U2018.4 project?
     
  45. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    @eagle555 - Just tested new MCS2 version 2.87 and MCS Caves & Overhangs 1.25 in a fresh Project on Unity 2018.4.22f1 (64-bit) with the default Physics Settings (same as yours) and still no luck.I also noticed the import Error with MCS is still present in the Versions I am getting from Unity.

    What I get is exactly like in the Video still. I am just running the Demo and combine at runtime , but I had a weird Error after importing and running the Demo for the first time, complaining about the rocks fbx not being set to read/write enabled. But inspecting the models showed they had the Read/write enabled TICKED! After closing and restarting Unity the Error was gone and MCS could do its magic, but still with the same output as in video ...
    btw - everything works great when turning off "Remove overlapping tris" ...

    I will try again using Unity 2019.3.12f1 (64-bit), maybe this will help?
     
    Last edited: Jul 19, 2020
  46. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Really weird you get the error importing MCS 2 in a new project. What causes the error is the MCSCaves Symbol being here while MCS Caves & Overhangs is not imported:
    upload_2020-7-8_18-49-10.png

    Can you try combining it in the editor? With no changes in example Scene...
     
  47. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Think I know what causes the issue. Also tried to combine in runtime and got the same error as you. In the readme I write to combine in the editor as Unity's `Static Batching` can be enabled, which is the case on default. So it's static batching causing it, it combines the meshes and then MCS tries to combine on top...Needs to be turned off or combine in the editor...Probably better that I don't mark the rocks as batching static...
     
    Weblox likes this.
  48. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    Just tested combining in Editor and that works excellent :D, while runtime combining still seems not. I have noticed Unitys "Static Batching" was enabled by default and it was in the first try , but I also disabled it and set Vsync to "dont sync" for the second try which did not help for the runtime combine. Unticking the static flag on the "small rocks" did not make a change either...

    Note: For my current Project I have to Combine in Editor anyway, so I am really happy to see the Editor Combining working so great and with the improved "Remove Overlapping tris" functionality. Also very much looking forward to the Texture Atlasing feature you have planned ... :p
     
    Last edited: Jul 8, 2020
  49. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,705
    Oki I'm glad that solved it. Yes will start working on that soon, I'm almost finished with my new Asset.
     
    hopeful and Weblox like this.
  50. Weblox

    Weblox

    Joined:
    Apr 11, 2016
    Posts:
    277
    Awesome! Really looking forward to see both - the new feature plus the new Asset! However - to clarify: the runtime combine Issue remains unsolved atm, but for me its not a great problem , since I have to use Editor Combine anyways. Odd enough that the code seems to work exactly as expected in Editor mode, while Geometry being messed up runtime - maybe this is a Unity flaw again?

    Thanks a lot for all your time & help & keep up the good work ! :p
     
    Last edited: Jul 8, 2020