-
Posts
85 -
Joined
-
Last visited
-
Days Won
6
wallworm last won the day on May 15
wallworm had the most liked content!
Contact Methods
-
Website URL
https://wallworm.com
Profile Information
-
Gender
Not Telling
-
Interests
3d, game development
Recent Profile Visitors
15345 profile views
wallworm's Achievements
-
wallworm started following Explode to Mesh Per Plant , Point Distributor Issue with Randomization , 3ds Max stalls loading on GrowFX plugin in 3ds Max 2022 and 2 others
-
I've opened an old scene to that utilized a GrowFX 2 node using a Point Distributor. When I last opened it a few years ago, each of the plants spawned by the GrowFX_Point nodes had variation. But now, every instance is identical and if I edit any parameters, all update identically with no variation. Is this a problem with updating a scene that needs some property set now or is this a defect?
-
3ds Max stalls loading on GrowFX plugin in 3ds Max 2022
wallworm replied to wallworm's topic in For technical questions
Thanks Eduard. I'll give it a go tomorrow. -
@Eduard The updated functions you added a while ago are great. It would be nice to expose to MAXScript the function of the Create Separate Objects button (I could only see exposure to the create Hierarchy of Meshes and Splines) and make it return the results. Also, it would be convenient if you could make two versions of the function: 1) One that matches current button that makes editable poly objects ; 2) a version that returns an array of trimesh() data (not scene nodes).
-
sksnil7887 started following wallworm
-
I am trying to create a tree species that includes different life-cycle phases inside the single GrowFX rule set. What I am trying to do is create a randomization of these life cycle elements. For example: Saplings Young Trees Middle Age Trees Old Trees Dying Trees Dead Trees Ideally I want to expose Public Paramaters so that the user can control the percentage of these. For example: Saplings 25% Young Trees 15% Middle Age Trees 10% Old Trees 5% Dying Trees 20% Dead Trees 25% Furthermore, I would like to be able to change the material IDs of each tree based on this rule set. In fact, I want the phase (Sapling, Old, Dead, etc) to be able to affect the entire hierarchy of that particular tree (so every level of a Sapling tree will know to use a consistent sapling material ID set, etc). Not only IDs, I'd prefer to be able to make some paths non-spawnable in some cases (like maybe the dead tree skips the leaves paths, etc.) Is there a sample of something like this already? Thanks in advance.
-
I tested the new exposed methods and I had an issue. I ran the function and hit undo a couple times. This seemed to be OK. In the MXS listener recording below, I hit undo after the first two times running the $.CreateHierarchyMeshes() method. Then I ran the function to create again but stuffed into variable s. Then I ran delete s. I then assigned s again with another call to the method but got an EXCEPTION_ACCESS_VIOLATION: $.CreateHierarchyMeshes true #($Editable_Poly:Cupressus_3_001_1_001 @ [257.438660,64.907280,0.000000], $Editable_Poly:Cupressus_3_001_2_001 @ [257.192810,69.849075,114.265289], $Editable_Poly:Cupressus_3_001_3_001 @ [287.182556,18.811779,144.575912], $Editable_Poly:Cupressus_3_001_2_002 @ [258.417938,68.139091,137.432953], $Editable_Poly:Cupressus_3_001_2_003 @ [256.248108,65.852432,160.015427], $Editable_Poly:Cupressus_3_001_3_002 @ [196.211304,65.676514,157.349869], $Editable_Poly:Cupressus_3_001_2_004 @ [253.304810,63.673962,179.984283], $Editable_Poly:Cupressus_3_001_3_003 @ [298.677460,29.907063,190.718811], $Editable_Poly:Cupressus_3_001_2_005 @ [254.182571,64.322510,199.802017], $Editable_Poly:Cupressus_3_001_3_004 @ [255.555679,132.645004,225.532196], $Editable_Poly:Cupressus_3_001_2_006 @ [257.332092,65.911949,219.440674], $Editable_Poly:Cupressus_3_001_3_005 @ [193.613007,-13.574837,249.484070], $Editable_Poly:Cupressus_3_001_2_007 @ [258.979675,66.757721,237.858826], $Editable_Poly:Cupressus_3_001_3_006 @ [298.677948,80.205109,242.760712], $Editable_Poly:Cupressus_3_001_3_007 @ [354.107910,113.332748,239.344101], $Editable_Poly:Cupressus_3_001_2_008 @ [258.659760,69.174309,255.113449], $Editable_Poly:Cupressus_3_001_3_008 @ [196.943237,88.189751,254.227020], $Editable_Poly:Cupressus_3_001_3_009 @ [159.362885,105.001373,246.191406], $Editable_Poly:Cupressus_3_001_2_009 @ [258.801208,70.954430,269.943054], $Editable_Poly:Cupressus_3_001_3_010 @ [279.488220,38.815216,276.179779], ...) $.CreateHierarchyMeshes false #($Editable_Poly:Cupressus_3_001_1_001 @ [257.438660,64.907280,0.000000], $Editable_Poly:Cupressus_3_001_2_001 @ [257.192810,69.849075,114.265289], $Editable_Poly:Cupressus_3_001_3_001 @ [287.182556,18.811779,144.575912], $Editable_Poly:Cupressus_3_001_2_002 @ [258.417938,68.139091,137.432953], $Editable_Poly:Cupressus_3_001_2_003 @ [256.248108,65.852432,160.015427], $Editable_Poly:Cupressus_3_001_3_002 @ [196.211304,65.676514,157.349869], $Editable_Poly:Cupressus_3_001_2_004 @ [253.304810,63.673962,179.984283], $Editable_Poly:Cupressus_3_001_3_003 @ [298.677460,29.907063,190.718811], $Editable_Poly:Cupressus_3_001_2_005 @ [254.182571,64.322510,199.802017], $Editable_Poly:Cupressus_3_001_3_004 @ [255.555679,132.645004,225.532196], $Editable_Poly:Cupressus_3_001_2_006 @ [257.332092,65.911949,219.440674], $Editable_Poly:Cupressus_3_001_3_005 @ [193.613007,-13.574837,249.484070], $Editable_Poly:Cupressus_3_001_2_007 @ [258.979675,66.757721,237.858826], $Editable_Poly:Cupressus_3_001_3_006 @ [298.677948,80.205109,242.760712], $Editable_Poly:Cupressus_3_001_3_007 @ [354.107910,113.332748,239.344101], $Editable_Poly:Cupressus_3_001_2_008 @ [258.659760,69.174309,255.113449], $Editable_Poly:Cupressus_3_001_3_008 @ [196.943237,88.189751,254.227020], $Editable_Poly:Cupressus_3_001_3_009 @ [159.362885,105.001373,246.191406], $Editable_Poly:Cupressus_3_001_2_009 @ [258.801208,70.954430,269.943054], $Editable_Poly:Cupressus_3_001_3_010 @ [279.488220,38.815216,276.179779], ...) s = $.CreateHierarchyMeshes true #($Editable_Poly:Cupressus_3_001_1_001 @ [257.438660,64.907280,0.000000], $Editable_Poly:Cupressus_3_001_2_001 @ [257.192810,69.849075,114.265289], $Editable_Poly:Cupressus_3_001_3_001 @ [287.182556,18.811779,144.575912], $Editable_Poly:Cupressus_3_001_2_002 @ [258.417938,68.139091,137.432953], $Editable_Poly:Cupressus_3_001_2_003 @ [256.248108,65.852432,160.015427], $Editable_Poly:Cupressus_3_001_3_002 @ [196.211304,65.676514,157.349869], $Editable_Poly:Cupressus_3_001_2_004 @ [253.304810,63.673962,179.984283], $Editable_Poly:Cupressus_3_001_3_003 @ [298.677460,29.907063,190.718811], $Editable_Poly:Cupressus_3_001_2_005 @ [254.182571,64.322510,199.802017], $Editable_Poly:Cupressus_3_001_3_004 @ [255.555679,132.645004,225.532196], $Editable_Poly:Cupressus_3_001_2_006 @ [257.332092,65.911949,219.440674], $Editable_Poly:Cupressus_3_001_3_005 @ [193.613007,-13.574837,249.484070], $Editable_Poly:Cupressus_3_001_2_007 @ [258.979675,66.757721,237.858826], $Editable_Poly:Cupressus_3_001_3_006 @ [298.677948,80.205109,242.760712], $Editable_Poly:Cupressus_3_001_3_007 @ [354.107910,113.332748,239.344101], $Editable_Poly:Cupressus_3_001_2_008 @ [258.659760,69.174309,255.113449], $Editable_Poly:Cupressus_3_001_3_008 @ [196.943237,88.189751,254.227020], $Editable_Poly:Cupressus_3_001_3_009 @ [159.362885,105.001373,246.191406], $Editable_Poly:Cupressus_3_001_2_009 @ [258.801208,70.954430,269.943054], $Editable_Poly:Cupressus_3_001_3_010 @ [279.488220,38.815216,276.179779], ...) s.count 164 delete s 164 s = $.CreateHierarchyMeshes false -- Known system exception -- ######################################################################## -- Address: 0xa348d9dc; nCode: 0x00000000C0000005 -- Desc: EXCEPTION_ACCESS_VIOLATION The thread tried to read from or write to a virtual address for which it does not have the appropriate access. -- Read of Address: 0x0000000000000000 -- ######################################################################## -- MAXScript callstack: -- thread data: threadID:14720 -- ------------------------------------------------------ -- [stack level: 0] -- In top-level -- ######################################################################## -- C++ callstack: -- (GrowFX): (filename not available): CanAutoDefer -- (GrowFX): (filename not available): GetGrowFX2Converter -- (GrowFX): (filename not available): GetGrowFX2Converter -- (MAXScrpt): (filename not available): Generic::apply -- (MAXScrpt): (filename not available): CodeTree::eval -- (MAXScrpt): (filename not available): MAXScriptException::ScopedMXSCallstackCaptureDisable::__autoclassinit2 -- (MAXScrpt): (filename not available): Primitive::apply -- (MAXScrpt): (filename not available): CodeTree::eval -- (MAXScrpt): (filename not available): SourceFileWrapper::eval -- (MAXScrpt): (filename not available): IsMAXScriptListenerInViewport -- (USER32): (filename not available): GetMenuItemCount -- (USER32): (filename not available): GetMenuItemCount -- (USER32): (filename not available): GetMenuItemCount -- (USER32): (filename not available): DispatchMessageW -- (USER32): (filename not available): CallWindowProcW -- (UIControls): (filename not available): (function-name not available) -- (UIControls): (filename not available): (function-name not available) -- (USER32): (filename not available): DispatchMessageW -- (USER32): (filename not available): DispatchMessageW -- (USER32): (filename not available): IsDialogMessageW -- (3dsmax): (filename not available): XMLAnimTreeEntry::GetUnique -- (3dsmax): (filename not available): Frustum::operator= -- (Qt5Core): (filename not available): QObject::qt_static_metacall -- (Qt5Core): (filename not available): QEventDispatcherWin32::preProcessNativeEvent -- (Qt5Core): (filename not available): QEventDispatcherWin32::processEvents -- (qwindows): (filename not available): qt_plugin_query_metadata -- (Qt5Core): (filename not available): QEventLoop::exec -- (Qt5Core): (filename not available): QCoreApplication::exec -- (3dsmax): (filename not available): Frustum::operator= -- (3dsmax): (filename not available): NodeAndAnims::SetNode -- (3dsmax): (filename not available): UtilGfx::InitRectIPoint3 -- ########################################################################
-
Awesome. I'll test this week!
-
I just tested. The button now operates as expected. Thank you so much! I saw that the GFX interface includes functions for : getNumSequences() getNumLines() GenerateOneMesh() I expect that this is the methods that you go through to generate the meshes like in the one in the UI. I propose that the exact method that the UI uses is also exposed as a method as well. It would be nice to have an option: GenerateAllMeshes <asMesh=false> where the return value is an array of new nodes in the scene when asMesh=false and an array of trimeshes if true.
-
That is awesome. I didn't know about the random generator node yet. Perfect!
-
I would like a new option for UVs that will make it easy to randomize the offsets of UVs in a mesh per element. Something as simple as a Randomize for U or V checkbox for use in tiling textures. Right now it's sometimes hard to hide the re-use of the same textures across branches because they all have the same starting position in V across the meshes made from a distributor.
-
I didn't see your message. I'm using Max 2022/2023.
-
Eduard, In this example, there is one GrowFX object using a Point Distributor. There are three point distributor Points that create the yellow cones. The objects that are created have a pivot that is where the GrowFX node was (world origin in this case). When I moved them away, notice how the pivot is not at the object base, but offset. I'd like the pivots to be where the original distributor spawn was (base of each cone). In the case of a point distributor, I'd like the position and orientation to match that of the point helper that the point distributor used. Hope this makes sense.
-
[BUG] : Create Point alignment broken with Snaps On
wallworm replied to wallworm's topic in Suggestions
Awesome, thanks!
