Search Unity

ARCHIMATIX PRO Node-based Parametric Modeling for Unity [Unity Awards Finalist]

Discussion in 'Assets and Asset Store' started by roryo, Jun 4, 2015.

  1. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    One way to make it be more precise is to lower your SEGS on the FreeCurve node, or to avoid bezier altogether… Also keep your Bay Maximum(?)and Actual Bay settings the same, although this is always a bit of alchemy and voodoo….

    The *new* method to do this is with a PlanDeformer node. You'd extrude the wall with the doors and windows already cut out, then deform that mesh with the FreeCurve. (the downside is that you need to subdivide the mesh so it has enough vertices to deform smoothly).
     
    JasonCG likes this.
  2. JasonCG

    JasonCG

    Joined:
    Oct 6, 2012
    Posts:
    29
    Got it! It looks like to do what I want to accomplish I'll end up using a combination of techniques. Neat stuff. I also see what you meant about subdividing the mesh.

    I'm now looking at how to integrate Archimatix with my other code.

    What is the recommended workflow for saving and loading Archimatix models so that they can be added to a blank AXModel graph at runtime? I intend on storing these models in asset bundles which are loaded at runtime.

    At the moment I have a couple Archimatix models. I wrote a wrapper class where I can specify shapes that should be shared - basically defining how nodes on the different models should interconnect. Essentially I want to be able to connect Archimatix models together on certain boundaries (like a Wall following the edge of a Floor). At the moment I'm using ShapeChanneler, and my idea is each model has a default shape/path or, if connected to a "parent" model, it will switch over to a shape (such as a FreeCurve) on the other model using the ShapeChanneler.

    So basically I want to create models in the Unity Editor, save them as AXModel prefabs, and then at runtime create a new AXModel graph by copying in multiple copies of the various AXModel prefabs to generate an overall model.

    I assume to connect the individual models together I'll need to copy over the AXParametricObjects into a single graph, then connect the nodes together... Or do I have one AXModel per object and link their nodes up ignoring the fact that they aren't really on the same graph?
     
  3. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Its best to load all the graphs into a single AX model, if you want to be able to connect them together. For Output/Input connections, you need to get a reference to the output and input parameters and then use input_p.makeDependentOn(output_p). To make a connection between parameters, say p_a and p_b, you need to use model.relate(p_a, p_b). Hope this helps!
     
    JasonCG likes this.
  4. vividhelix

    vividhelix

    Joined:
    Mar 20, 2013
    Posts:
    78
    Is there a way to "expose" handles? I have a group that contains several shapes and I'm interested in only exposing a few of their underlying handles at the group level (I saw the "expose" checkbox on controls, I'm referring to actual handles).

    Also, is there such a thing as global variables? Thinking about something like a blackboard with variables (like a few materials and maybe some values) that are used across several objects without having to tie the properties between the objects every time?
     
  5. wanglibin

    wanglibin

    Joined:
    Nov 13, 2016
    Posts:
    14
    Roryo,thanks for your detailly suggestion,it`s helpful.And i meet other problem during my work,the Prefab Instancer node `s reference to prefab cannot be save to library,when i save my work to library and open again,the reference to prefab lost.In consideration of i have a lot of Prefab Instancer node,it`s a big preblem.
     
  6. karmacomp

    karmacomp

    Joined:
    May 2, 2014
    Posts:
    43
    I just purchased Archimatix and installing it on a fresh copy of Unity 3D 5.5.4 gives me 4 errors in the following files:

    Assets/Archimatix/Scripts/AXGeometryTools/PlanSweeper.cs(901,9): error CS1061: Type `UnityEngine.Mesh' does not contain a definition for `RecalculateTangents' and no extension method `RecalculateTangents' of type `UnityEngine.Mesh' could be found. Are you missing an assembly reference?

    Assets/Archimatix/Scripts/Core/Generators/Deformers/TaperDeformer.cs(275,10): error CS1061: Type `UnityEngine.Mesh' does not contain a definition for `RecalculateTangents' and no extension method `RecalculateTangents' of type `UnityEngine.Mesh' could be found. Are you missing an assembly reference?

    Assets/Archimatix/Scripts/Core/Generators/Meshers/Lofter.cs(178,10): error CS1061: Type `UnityEngine.Mesh' does not contain a definition for `RecalculateTangents' and no extension method `RecalculateTangents' of type `UnityEngine.Mesh' could be found. Are you missing an assembly reference?

    Assets/Archimatix/Scripts/Core/Generators/Primitives/FrustrumPrimitive.cs(138,9): error CS1061: Type `UnityEngine.Mesh' does not contain a definition for `RecalculateTangents' and no extension method `RecalculateTangents' of type `UnityEngine.Mesh' could be found. Are you missing an assembly reference?

    Nothing else is installed. I have no idea how to fix this. Any ideas?

    Mike
     
  7. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi Karmacomp - sorry you ran into this. AX currently requires Unity version 5.6.4 or higher to take advantage of some optimizations in mesh generation on their end, including the addition of their native Mesh.RecalculateTangents feature. If this is a problem, please let me know.
     
  8. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    I need to add the ability for a library item to find a prefab based on its id. This shouldn't be difficult. I will try to post an update to the slack in the next day or so that includes this. To receive a slack invite, please post your asset store invoice id and email in a private conversation here.
     
  9. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @vividhelix - it would be great to be able to decide which handles have their visibility bubble up. Sometimes a lot of handles can show up at once. The expose checkbox is to expose that parameter to the model interface to make it accessible from runtime scripts. We don't have global variables yet, but I was thinking of adding the ability to use exposed runtime parameters as globals within the graph.
     
  10. karmacomp

    karmacomp

    Joined:
    May 2, 2014
    Posts:
    43
    Very weird because I have tried to 'check for updates' and it tells me I have the latest version.

    I'll download from Unity's website and see what happens.

    Mike
     
  11. karmacomp

    karmacomp

    Joined:
    May 2, 2014
    Posts:
    43
    That worked - thank you.

    Mike
     
  12. Hattoriseed

    Hattoriseed

    Joined:
    Feb 24, 2015
    Posts:
    25
    Hi there, I don't have much experience with Archimatix yet, I was hoping someone could give me some advice. I am making two tunnels that are parallel to each other and I need to be able to connect them with smaller tunnels that are perpendicular to the main two tunnels.

    upload_2018-2-11_10-16-51.png



    Thanks for your help!
     

    Attached Files:

    kerrmedia and protopop like this.
  13. Slick_Nick

    Slick_Nick

    Joined:
    Jan 4, 2014
    Posts:
    37
    Hello!

    Let me start to thank you for this truly amazing tool :)

    I however have one issue.. after I've imported Archimatix to my project, when starting a scene in the editor, the editor freezes for about 5 seconds, even on empty scenes.

    And that is after the scene has fully loaded.

    When i try remove the Archimatix folder the editor does not freeze anymore after a scene has loaded.

    I am using unity 2017.3.1f1, any help would be greatly appreciated :D

    Thanks in advance /Niklas
     
  14. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    BarrelGroin.png
    I show a cross-barrel vault at the end of the Dome and Rooftop Fundamentals tutorial. I also show some variations on how to stack plans to cover "wings" but you will have to work it out to match your arch shape.

    http://community.archimatix.com/main-forum/dome-and-rooftop-fundamentals/
     
    Eva-Dragonflame and Hattoriseed like this.
  15. Hattoriseed

    Hattoriseed

    Joined:
    Feb 24, 2015
    Posts:
    25
    Hi @wetcircuit thanks for that, first I wanted to thank you for your Archimatix Dome and Rooftop Fundamentals document it has been really helpful. I create something similar following your lessons but is still not quite what I need right now. I have to make the intersecting tunnels shorter than the main tunnels; they can't be the same height.

    But really, great work with those lessons, I am looking forward to anything else you prepare in the future.
     
    Flurgle likes this.
  16. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    As I said, you would have to make a stacked plan to work out your arch shape.

    In your graph it looks like you have straight walls and a curved top. I'm not making assumptions about how high the smaller arches go, or if that is the actual profile of your tunnel (or if you want it more like the photo). If it is like your graph I think it can be done, but like the photo will probably not be possible without CSG.
     
  17. dnoparker

    dnoparker

    Joined:
    Aug 28, 2013
    Posts:
    63
    Are the bezier handles breakable yet? :)
     
  18. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Not yet, but thanks for the reminder, @dnoparker! ;)
     
  19. bakanekofr

    bakanekofr

    Joined:
    Feb 28, 2014
    Posts:
    122
    @roryo:

    I'm having a issue when loading my models from the library: In the scene view only a cyan outline is visible, and the console have many error. Using Unity 2017.3.0f3. Here's the log:

    ArgumentOutOfRangeException: Argument is out of range.
    Parameter name: index
    System.Collections.Generic.List`1[AXClipperLib.IntPoint].get_Item (Int32 index) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)
    AX.AXShape.joinPathsIfEndpointsMatch (System.Collections.Generic.List`1& paths) (at Assets/Archimatix/Scripts/Core/AXShape.cs:1185)
    AX.AXShape.genrateRail () (at Assets/Archimatix/Scripts/Core/AXShape.cs:1099)
    AX.AXShape.generate () (at Assets/Archimatix/Scripts/Core/AXShape.cs:410)
    AX.Generators.ShapeMerger.generate (Boolean makeGameObjects, AX.AXParametricObject initiator_po, Boolean isReplica) (at Assets/Archimatix/Scripts/Core/Generators/ShapeGenerators.cs:247)
    AX.AXParametricObject.generateOutputNow (Boolean makeGameObjects, AX.AXParametricObject initiator_po, Boolean renderToOutputParameter, Boolean forceGenerate) (at Assets/Archimatix/Scripts/Core/AXParametricObject.cs:4412)
    AX.AXParametricObject.generateOutputNow (Boolean makeGameObjects, AX.AXParametricObject initiator_po) (at Assets/Archimatix/Scripts/Core/AXParametricObject.cs:4321)
    AX.AXParametricObject.generateOutputNow (Boolean makeGameObjects, AX.AXParametricObject initiator_po, Boolean renderToOutputParameter, Boolean forceGenerate) (at Assets/Archimatix/Scripts/Core/AXParametricObject.cs:4370)
    AX.AXModel.generateAlteredPOs () (at Assets/Archimatix/Scripts/Core/AXModel.cs:2961)
    AX.AXModel.generate () (at Assets/Archimatix/Scripts/Core/AXModel.cs:2813)
    AX.AXModel.build () (at Assets/Archimatix/Scripts/Core/AXModel.cs:3517)
    AXEditor.ArchimatixEngine.SceneGUI (UnityEditor.SceneView sceneView) (at Assets/Archimatix/Scripts/Editor/ArchimatixEngine.cs:1473)
    UnityEditor.SceneView.CallOnSceneGUI () (at C:/buildslave/unity/build/Editor/Mono/SceneView/SceneView.cs:2518)
    UnityEditor.SceneView.HandleSelectionAndOnSceneGUI () (at C:/buildslave/unity/build/Editor/Mono/SceneView/SceneView.cs:1833)
    UnityEditor.SceneView.OnGUI () (at C:/buildslave/unity/build/Editor/Mono/SceneView/SceneView.cs:1663)
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
    System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:295)
    UnityEditor.HostView.Invoke (System.String methodName) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:288)
    UnityEditor.HostView.InvokeOnGUI (Rect onGUIPosition) (at C:/buildslave/unity/build/Editor/Mono/HostView.cs:255)

    Any fixes available? I'm using the latest assetstore version, I've checked on Slack but I don't see any available builds - too old? (I don't have a paid Slack account). Thanks!
     
  20. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @bakanekofr - is your OS set to a language other than english? This could be a problem of commas vs periods in the JSON data for the library item.
     
  21. bakanekofr

    bakanekofr

    Joined:
    Feb 28, 2014
    Posts:
    122
    @roryo

    I live in France but my OS is set to English (Windows 10 Pro x64). Though I don't think this is the problem as everything works fine, it's just one model that I've made that generate these errors when I try to import it. Please check your PMs, I've attached the file there.
     
  22. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Can you post the model to me on the slack? The axobj file is all I need. Thanks ;)
     
  23. bakanekofr

    bakanekofr

    Joined:
    Feb 28, 2014
    Posts:
    122
    Sure, I've just posted a PM on Slack. Thanks!
     
  24. Slick_Nick

    Slick_Nick

    Joined:
    Jan 4, 2014
    Posts:
    37
    *bump*
     
  25. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @Slick_Nick - that was happening for a while when AX used to reload the objects library every time. What version of AX are you using?
     
  26. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @wanglibin - in the latest version posted to the slack in the update_builds channel (1.1.2b1), you can now save PrefabInstancer nodes to the library. :)
     
  27. Slick_Nick

    Slick_Nick

    Joined:
    Jan 4, 2014
    Posts:
    37
    I am using the latest assetstore version, to access the latest versions i should mail you a copy of my invoice?
     
  28. Raistlin2015

    Raistlin2015

    Joined:
    Apr 4, 2015
    Posts:
    27
    Thanks for the amazing tool. Is there an ETA for 3d curves. I would like to make roads which follow terrain with the free curve and planSweep.
     
  29. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Yes, and an email to send the slack invite to. You can post them in a PM (Conversation) here.
     
    antoripa likes this.
  30. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Perhaps by early May. :)
     
    Raistlin2015, antoripa and wetcircuit like this.
  31. wanglibin

    wanglibin

    Joined:
    Nov 13, 2016
    Posts:
    14
    Thank you so much,i will carry on my Asia Building project.
     
  32. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Hello @roryo
    I'm looking to make some stylised buildings, but when I use the inflate (or any deformer, really) the bits i've created with a path and floor repeater seem to behave strangely, see piccy below.

    I want to have the windows and edge bits following the inflation of the underlying structure.

    How can I achieve this?

    Kindest,
    Mark

     
  33. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @marcos - could you post the scene file to me at the slack site? I would live to take a look at it.
     
  34. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    sent you a PM @roryo
     
  35. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @marcos - thanks for sending your scene. It looks like you found a bug with the InflateDeformer. It should not be hard to fix. In the meantime, it is working with the TaperDeformer and the TwistDeformer. I increased the subdivision of the building Box to help it have the detail to stay with the windows. There are two places you can increase the subdivision: in the Extrude Segs parameter (which you found already, but I upped it a bit more) and in the subdivision parameter of the incoming Plan shape for the Extrude.

    Archimatix 2018-03-06_08-33-22_AM.jpg
     
  36. marcos

    marcos

    Joined:
    Oct 18, 2009
    Posts:
    592
    Oh sweet, good to know I wasn't going crazy :~)
     
  37. Belleal

    Belleal

    Joined:
    Jan 11, 2016
    Posts:
    17
    Hi, I've been playing around with Archimatix for the last week and so far it has proven to be an exceptional tool. I noticed something today though, that I cannot fathom and would like to see if someone can explain the particular case:
    upload_2018-3-8_21-29-18.png

    Basically, it should be a very simple setup - a ball that is aligned at center for all axis, and a short cylinder to serve as a handle that is aligned to center on Y and Z, and to the right on X. My intent was to have then ideally matched on their configured pivots. However, as you can see in the screenshot I see a not-very-small gap between the two pivots with the cylinder being offset by a certain stretch. I could not identify the reason for this by looking at all of the available properties, so I guess I am missing a major point here on how the alignment works. Any insight will be much appreciated.
     
  38. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    Check the transform settings on the 2D shapes, the HalfCircle node and whatever the node the Extrude is attached to.
     
  39. Belleal

    Belleal

    Joined:
    Jan 11, 2016
    Posts:
    17
    Well, I managed to solve the mismatch by removing the transform settings from the parent grouper (i.e. set all of them to NONE), but I was more curious if there is a specific way that system is supposed to function - like general rules or dependencies that make it behave in this way.
     
  40. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    Well, I can't speak to your specific scene because I don't know the details, but I think of it the same as having nested gameobjects, each node having their own LOCAL SPACE. It starts to make sense when you have procedural buildings with parts that need to align with a plan but not be on the plan line (think eaves that overhang a wall, or door frames that need to be aligned with the outside surface of a wall.

    I've also noticed that many of the 2D nodes are not set at zero, which I assume is a flaw in the way Rory saved them at creation (you can always edit, or add the nodes with corrections to the library).

    If the Grouper messed up their positions, that *might* be a bug…?
     
    Belleal likes this.
  41. Belleal

    Belleal

    Joined:
    Jan 11, 2016
    Posts:
    17
    Hi guys, another question - for some reason, I cannot make the localScale of a parent object to affect the models when I instantiate them as AXModel in order to be able to change some runtime params. The models continue to behave as if the localScale of the parent is equal 1, but that's not the case.

    Any suggestions?
     
  42. Nadan

    Nadan

    Joined:
    Jan 20, 2013
    Posts:
    341
    Hi, I purchased Archimatix some timeago and I'm now learning to use it for my next game.

    In the game I try to make these huge rooms with glass domes. I drew a picture what I'm trying to do.



    I have selected the DomeShape and from the Output Shape I connected it to the Lathe. This could be the window glass covering the dome but how could I made frames that hold the dome together? I made secold Lathe with the same DomeShape but I need to somehow drill "holes" in this secold dome that represents the frames. I've been reading the manual and watching lots of tutorial videos but still haven't figured this out.

    Any help?
     
  43. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    I believe the options are:
    • You could use a grid texture.
    • You can build the individual frame parts
    Depending on scale and proximity you might want to use both (stamp 2 models and let Unity handle LOD)

    Use SweepAngle on the Lathe to build the vertical frame parts. connect this output into a RadialRepeater node for the "longitude" frames.

    to build large horizontal frame parts, try a CircleArc node into a Lathe node. CircleArc lets you set the "latitude" of the dome start/end. CircleNode creates a perfect circle so if your dome is flattened (or beehive) you'll probably need to put all the frame parts into a Grouper and scale on the Y-axis.

    A more dynamic solution for the horizontal beams would be to create a compound (disconnected) 2D shape (for example: a series of small squares) that follow the curve of the dome – you could even use a PathRepeater to make them procedurally follow the curve of the DomeShape node – this compound 2D shape is connected to a Lathe.
     
    roryo and Nadan like this.
  44. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Working on a new node: ChainRepeater! This should be useful for making physics-based ropes and chains.

    ChainRepeater.gif
     
    Regularry, Arganth, sjm-tech and 4 others like this.
  45. Hitch42

    Hitch42

    Joined:
    May 12, 2015
    Posts:
    98
    Oh wow, I didn't predict Archimatix going in this direction. I love it. All of your updates are wonderful surprises.
     
    roryo likes this.
  46. AFrisby

    AFrisby

    Joined:
    Apr 14, 2010
    Posts:
    223
    We've been adding support for Archimatix to Sinespace - so models you upload to the world using Archimatix will be editable by end-users inside the client. This feature should launch this month (somewhere towards the end) and is already getting some excited noises from our users.

    Take a (very) quick preview here:



    One of our users did a blogpost with some more clips. :)
     
    roryo likes this.
  47. frozenkarp

    frozenkarp

    Joined:
    Jul 5, 2015
    Posts:
    1
    Hello everyone!
    What versions of Unity are supported?

    I have troubles with Unity 2017.4.1f1 (Archimatix 1.1.0). Imported Archimatix in the empty project but the graph editor does not display correctly (picture below).

    ax_issue.png
     
  48. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @frozenkarp - I am using AX in 2017.3 and 2018.1 beta. Let me check 2017.4...
     
  49. Nevercallmebyname

    Nevercallmebyname

    Joined:
    Nov 18, 2013
    Posts:
    120
    I just came in here to ask about this same situation. Although I'm trying to figure out how to make a detail at the bottom of the dome that's to stay the same height, bending as I change the radius of the dome so that it stays attached to the dome.
     
    Last edited: Apr 16, 2018
  50. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    *working on an example* ;)