Search Unity

  1. Calling all beginners! Join the FPS Beginners Mods Challenge until December 13.
    Dismiss Notice
  2. It's Cyber Week at the Asset Store!
    Dismiss Notice

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

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

  1. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Working through some level design workflow...

    Archimatix 2015-06-30_10-12-03_AM.jpg



    Archimatix 2015-06-30_10-12-57_AM.jpg



    Archimatix 2015-06-30_10-16-40_AM.jpg



    Archimatix 2015-06-30_10-36-10_AM.jpg
     

    Attached Files:

    Last edited: Jun 30, 2015
    CognitiveCode likes this.
  2. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Finally got around to coding the RadialRepeater!

    Archimatix 2015-06-30_01-29-16_PM.jpg

    The dome and cornices are 8-sided Lathes, but the dome ribs and the wall panels are repeated with the RadialRepeater with 8 segments.

    Archimatix 2015-06-30_01-20-14_PM.jpg
     
    Last edited: Jun 30, 2015
  3. LockonS

    LockonS

    Joined:
    Jan 24, 2012
    Posts:
    10
    Beautiful work! Can't wait to try it out
     
  4. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Thanks @LockonS!

    For the last couple of days I've been polishing workflow and making various fixes. Here is the latest test scene:

    Archimatix 2015-07-04_02-12-09_PM.jpg

    A single "hut" model with a circular plan has its radius varied. Then the circle is replaced with a rectangle, a rounded rectangle and an I-Shape.

    Archimatix 2015-07-04_02-13-32_PM.jpg

    Archimatix 2015-07-04_02-12-49_PM.jpg

    This village scene was modeled entirely from scratch and totally within Unity in about 15 minutes!

    Archimatix 2015-07-04_02-27-30_PM.jpg
     
    Venryx likes this.
  5. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Kyle faces off with his doppelgänger in a deserted robot city...

    Archimatix 2015-07-05_09-33-54_AM.jpg


    Archimatix 2015-07-05_09-22-55_AM.jpg

    This scene is all about ShapeMerger and FloorRepeater.
     
    pixelsteam likes this.
  6. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Another simple test scene gone indulgently awry!

    Archimatix 2015-07-05_09-26-52_PM.jpg

    Archimatix 2015-07-05_10-43-09_PM.jpg
     
    Last edited: Jul 6, 2015
    Mister-D likes this.
  7. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Today I am am working on saving to and retrieving models from the AXLibrary.

    Archimatix 2015-07-07_01-23-36_PM.jpg
     
  8. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Not exactly sure what it is, but I know it can be modeled in Unity with Archimatix in a matter of minutes!

    Archimatix 2015-07-12_10-04-40_PM.jpg



    Archimatix 2015-07-12_10-02-27_PM.jpg
     
  9. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Perchance to dream... of the GridRepeater.

    Archimatix 2015-07-14_08-51-44_AM.jpg

    0 to 1,000,000 triangles in 60 seconds with GridRepeater!
     
    antoripa and chelnok like this.
  10. DaGround

    DaGround

    Joined:
    May 26, 2014
    Posts:
    16
    wow this looks awesome..! So you can basically construct anything you like.. so e.g. it's possible to construct random
    spacestations (bodys in circular pipeforms and solar wings) at runtime, save and load them? :D that would be an instant buy from me :p
     
  11. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    @DaGround, since Archimatix is a generalized parametric modeler, you can indeed construct almost anything you like right in the Unity editor. What's more, once you build a parametric model, say of a space station, you can benefit from that effort by building dozens more in the same art (but more quickly just by varying the parameters). In a future release of Archimatix, you will be able to easily allow a player to manipulate the your parametric space station model at runtime – no two players space stations would be exactly alike. The first release of Archimatix will focus on modeling in the editor to use the instances you create as static models at runtime.
     
    Last edited: Jul 19, 2015
    DaGround likes this.
  12. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Working on free-form curve editing, shape merging and extrudes.

    Archimatix 2015-07-23_09-48-02_AM.jpg

    Archimatix 2015-07-23_09-47-28_AM.jpg

    Archimatix 2015-07-23_09-46-22_AM.jpg

    Archimatix 2015-07-23_09-58-10_AM.jpg
     

    Attached Files:

  13. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    This model was generated in the Unity Editor with only 7 Archimatix palettes...

    Archimatix 2015-07-26_04-44-16_PM.jpg


    You can save any subset of palettes as a parametric object to your 3D library...

    Archimatix 2015-07-26_04-49-43_PM.jpg

    And reuse any object in a new model, for example here the arch panel is used in a ShapeRepeater with an I-Shape as the input...

    Archimatix 2015-07-26_05-05-44_PM.jpg

    Every parameter in any node of the graph is always editable, such as arch radius, even after the object is brought in from the 3D library...

    Archimatix 2015-07-26_05-10-28_PM.jpg
     

    Attached Files:

    alelordelo likes this.
  14. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Robot Kyle is overjoyed that Archimatix will ship with some useful parametric stair models in the AX Library, but his robot senses are telling him that these particular switchback stairs are going to need some landings and rails before they are safe enough for humans to use...

    Archimatix 2015-08-05_11-38-15_AM.jpg
     
  15. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,409
    Really looking forward to this coming out. Do you think it might happen this month?
     
  16. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Hi @elbows, I am not sure it can go out this month, but it is within the realm of possibility. More likely it will be in September. We are coming into the final lap for version 1.0, to be sure.
     
    chelnok, elbows and tango209 like this.
  17. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    A quick study for a parametric shed with two versions. By clicking on the handles in the triangle of the truss, the entire structure resizes. The handles are included in the IsoscelesTriangle palette, but their parameter values are linked to other parameters in the model graph (the red connectors). Clicking on other palettes reveal more handles to modify parts of the model in realtime.

    Archimatix 2015-08-05_05-26-33_PM.jpg
     
  18. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    I see so far everything flat... could you put arches in like say for bridges or tunnels that go up and down?

    Or boardwalks that create steps as the angle becomes steeper?
     
  19. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    @Licarell, that is a great question. There should be a generic ramping tool at some point. That would probably come along with a new class of deformer palettes. Another way to do what you are asking for is a new Shape input to a Repeater that can feed a height parameter for the y-value for the parametric model being repeated. Unfortunately, while these are not hard to do, neither of these will be able to make it into version 1. Unless... *fighting temptation to implement it immediately!*
     
  20. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    @Licarell, I know this is not exactly what you were thinking of, but here is what is possible with the version 1 palettes:

    Archimatix 2015-08-05_06-56-33_PM.jpg

    And by modifying the bridge curve:

    Archimatix 2015-08-05_06-59-24_PM.jpg

    However, the bridge can't be curved in plan yet until we add 3D splines. Unless.... *hmmm*
     
    SAOTA likes this.
  21. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Well that's getting there for sure!
    I figured by the other videos you would be able to do it using a profile of the spline.

    But I know where you would like to be using splines to run a sweep... say for a cave system... which brings me to another idea... creating custom splines not from boolean of basic geometry... augh... scope creep....
     
  22. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    There is already a FreeFormShape palette with interactive editing controls in the scene view, but it is for the moment only 2D. Currently, with that palette, you can add, move and delete points in the scene view, but I still need to add Bezier handles (will be in version 1). But, @Licarell, now you really do have me tempted to add 3D splines to version 1! Such splines could have sections extruded as up always (for road/path building) or as piping extrudes where the section turns as it goes around, such as is the case with gabled roof moldings.
     
    Licarell likes this.
  23. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Just for fun, I added a PerlinDeformer node to, well, just to go there! A full range of deformer nodes will have to wait for future releases.

    Archimatix 2015-08-06_09-56-08_AM.jpg

    A bug in this speedy implementation has the thumbnail in the Extrusion palette showing the post deformation state. I will fix that, but then get back to version 1 coding!
     
    Last edited: Jan 15, 2017
  24. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    If any of you C# coders out there are interested (and to show I did not go on a very lengthy version 1 digression to try a deformer palette!), here is how I defined a new palette for the above Deformer. Extending Archimatix is not for the faint of heart, but for a seasoned coder, it should be relatively easy to add functionality to the system by way of adding extending nodes and adding them to the menus.

    In this case
    Code (CSharp):
    1. input_p.DependsOn.meshes
    gets whatever is plugged into the input for this node and lets you do something with it and and then add it to the output of the node.

    Code (CSharp):
    1.     public class PerlinDeformer : Generator3D, IDeformer
    2.     {
    3.         [MenuItem("Archimatix/Generators/Deformers/PerlinDeformer")]
    4.         static void Init() {
    5.             AXUtilities.addGeneratorPaletteToCurrentModel("PerlinDeformer");
    6.         }
    7.      
    8.         // INIT_PARAMETRIC_OBJECT
    9.         public override void init_parametricObject()
    10.         {
    11.             // init parameters for palette
    12.             parametricObject.addParameter(new AXParameter(AXParameter.DataType.Mesh, AXParameter.ParameterType.Input, "Input Mesh"));
    13.             parametricObject.addParameter(new AXParameter(AXParameter.DataType.Mesh, AXParameter.ParameterType.Output,"Output Mesh"));
    14.             parametricObject.addParameter(AXParameter.DataType.Float,     "amount");
    15.         }
    16.      
    17.         // GENERATE
    18.         public override void generate(string genid, AXParametricObject initiator_po, bool isReplica)
    19.         {        
    20.             if (parametricObject == null  || ! parametricObject.hasInputMeshReady("Input Mesh"))
    21.                 return;
    22.          
    23.             float amount     = parametricObject.floatValue("amount");
    24.          
    25.             List<AXMesh>     ax_meshes         = new List<AXMesh>();
    26.          
    27.             AXParameter         input_p      = parametricObject.getParameter("Input Mesh");
    28.             AXParametricObject     input_parent = input_p.DependsOn.Parent;
    29.          
    30.             Matrix4x4 sourceLocalTrans     = input_parent.getLocalTransformMatrix();
    31.             Matrix4x4 sourceLocalAxis     = input_parent.getAxisRotationMatrix();
    32.             Matrix4x4 sourceLocalAlign     = input_parent.getLocalAlignMatrix();
    33.             // just pass it through, but use grandparent's transform!
    34.          
    35.          
    36.             foreach (AXMesh amesh in input_p.DependsOn.meshes)
    37.             {
    38.                 // Instance builds on the transform of its source object.
    39.                 Mesh m = amesh.mesh;
    40.                 Vector3[] verts = m.vertices;
    41.              
    42.                 for (int i=0; i<verts.Length; i++)
    43.                 {
    44.                     float new_y = (verts[i].y < .01) ? verts[i].y : verts[i].y+amount* (Mathf.PerlinNoise(verts[i].x,  verts[i].z) *  .5f);
    45.                     verts[i] = new Vector3(verts[i].x, new_y,  verts[i].z);
    46.                 }
    47.                 m.vertices = verts;
    48.              
    49.                 ax_meshes.Add (amesh.Clone(  amesh.transMatrix   * sourceLocalAlign.inverse * sourceLocalAxis.inverse * sourceLocalTrans.inverse));
    50.             }
    51.          
    52.             parametricObject.bounds = input_parent.bounds;
    53.             parametricObject.finishMultiMeshesAndOutput(ax_meshes, isReplica);
    54.         }
    55.      
    56.      
    57.      
    58.     }
    59.  
     
    Last edited: Jan 15, 2017
  25. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Today is for debugging disoriented control shapes in the SceneView...

    Archimatix 2015-08-09_08-47-30_AM.jpg
     
  26. sloopidoopi

    sloopidoopi

    Joined:
    Jan 2, 2010
    Posts:
    242
    All this teasing makes me nervous. Can't await the release date !

    Is it possible to import shapes from other vector formats ( SVG, EPS ..)? Or do you only use a custom shape format?
     
  27. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    @sloopidoopi, It should be possible to import vector shapes in the future. That is something I would definitely like to support! But not in version one (my new mantra as we to get the first release out there)!
     
  28. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Getting a handle on the placement of Archimatix handles in SceneView!

    Archimatix 2015-08-12_12-55-54_PM.jpg

    Three variations of the above model adjusting only the Scene View handles...

    Archimatix 2015-08-12_01-14-12_PM.jpg

    And modifying the palette for the crossbeam on the right by adding a Wallthickness to its share and increasing its vertical repeats:

    Archimatix 2015-08-12_01-29-45_PM.jpg
     
  29. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Would something like this be challenging to model in Blender, 3DMax or Maya? How long would it take?

    Archimatix 2015-08-12_03-16-26_PM.jpg

    With a few adjustments, Robot Kyle is appeased with a respectable framing device.

    Archimatix 2015-08-12_03-28-20_PM.jpg
     
    AdamGoodrich and SAOTA like this.
  30. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Robot Kyle is having too much fun with Archimatix handles in SceneView.

    Archimatix 2015-08-13_08-21-46_AM.jpg


    Archimatix 2015-08-13_08-33-08_AM.jpg
     
  31. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Every now and then, Robot Kyle stands in stupefied awe of his own creations!
    Archimatix 2015-08-13_08-49-19_AM.jpg
     
    Mister-D, elbows and AdamGoodrich like this.
  32. CognitiveCode

    CognitiveCode

    Joined:
    Nov 12, 2014
    Posts:
    54
    This looks terrific. Can't wait for this to appear in the asset store.
     
    chelnok likes this.
  33. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Thanks @CognitiveCode, that's just the kind of encouragement I need to help me get this release out the door!
     
  34. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Playing with Archimatix is fun, but also helps smooth out workflow. I am realizing that much of its power comes from the merging of simple 2D parametric shape primitives. In the second image, only a single circle (under the orange tower) is being manipulated. In the third image, more freeform manipulations of multiple handles. Its just mesmerizing to play with the model once it has been set up. Models like this one will ship with the Archimatix library.




    Archimatix 2015-08-16_07-50-35_AM.jpg


    Archimatix 2015-08-16_09-16-37_AM.jpg




    Archimatix 2015-08-16_09-52-48_AM.jpg
     
    SAOTA and AdamGoodrich like this.
  35. SAOTA

    SAOTA

    Joined:
    Feb 9, 2015
    Posts:
    220
    Keep them coming, these are great!!
     
  36. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Once a Shape is created, you can save it to the Library ("Crest 1" is visible in the library view at the lower left)

    Archimatix 2015-08-17_12-47-40_PM.jpg

    Three variations manipulating the central rounded rectangle:

    Archimatix 2015-08-17_12-42-28_PM.jpg
     
  37. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Here is another fun shape merging session. Is it a shield crest or character design? Or both at once?

    Archimatix 2015-08-17_03-19-55_PM.jpg


     
    CognitiveCode and IndieAner3d like this.
  38. IndieAner3d

    IndieAner3d

    Joined:
    Oct 20, 2014
    Posts:
    77
    This looks so incredible *_*
    It looks like you can make
    "Complex Mesh" in short time... :--)

    Is it working with SnapToGrid...!?!
    I like ProBuilder much...^^

    How high is the chance that
    I can work with this tool...
    Never used VisualBasedTools/Windows before...!!!
     
    Last edited: Aug 27, 2015
  39. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Thanks @IndieAner3d! You can make pretty elaborate meshes and complex models with relatively few palettes in Archimatix. At the same time, the meshes are at the moment not extremely complex topologies as one might find in Rhino's Grasshopper or other parametric modelers. But perhaps in the future! Archimatix is extensible, meaning that other coders could add palettes to the system that generate other kinds of topological surfaces.

    No grid snapping as yet, but this should be trivial to add in future updates.

    I think the learning curve may not be that steep. I will post a video a little later showing the above model being rigged up so you can get a sense of how easy (or difficult) you could imagine it to be for yourself. In general, a graphical nodal editor makes things easier than building the same relations with lines of code in a script.
     
    Last edited: Aug 19, 2015
    radimoto, AdamGoodrich and SAOTA like this.
  40. IndieAner3d

    IndieAner3d

    Joined:
    Oct 20, 2014
    Posts:
    77
    THX for your reply ^-^
    I stay tuned...
    for the next news/tuts... :--)
     
  41. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    As I started making the video tutorial for the Shield Character above, I was more aware of a bunch of little workflow inconsistencies that I have been meaning to iron out. While doing that, I have snagged a couple of bugs as well. I'll upload the video soon.
     
    IndieAner3d likes this.
  42. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Tweaking the GUI colors today. Think the pro skin is looking better:

    Archimatix 2015-08-23_02-02-22_PM.jpg

    The color coding is purple:Shape; green:Mesher; Yellow: Grouper; blue: Repeater; red: Primitive. When you see colors in the library thumbnails, you can get a sense of whether they are meshes or groups, etc.

    The light skin still needs a bit of work...

    Archimatix 2015-08-23_01-17-32_PM.jpg

    Or should the Archimatix editor window with the node graph mimic the pro skin colors?
     
    Last edited: Aug 23, 2015
  43. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Robot Kyle and his friends are enjoying a last day of summer viewing the "caged ship," a remnant from the time of humans. Archimatix 2015-08-23_04-41-13_PM copy.jpg

    Archimatix 2015-08-23_04-20-12_PM.jpg

    Archimatix 2015-08-23_04-39-05_PM.jpg

    Archimatix 2015-08-23_10-01-14_PM.jpg

    This scene was created in about 10 minutes, from scratch, completely in Unity using Archimatix!


     
  44. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Making a tutorial video is a little like preparing for a performance or recital. A whole lotta polishing and optimization going on here! Video due soon...

    Archimatix 2015-08-26_12-00-49_PM.jpg
     
    Last edited: Aug 26, 2015
  45. SirStompsalot

    SirStompsalot

    Joined:
    Sep 28, 2013
    Posts:
    99
    It's looking more and more like you're nearly ready for testing/release. I for one am really excited to see this come to the asset store. I know you're not planning for runtime editing on release, but I would love to see how it might be executed.
     
  46. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Thanks for the encouragement @SirStompsalot! The most challenging part of runtime editing in Archimatix will be the GUI. I wish Unity would make all the Editor Handles available in runtime. That would make things easier for you guys to include Archimatix editing in your game. That being said, custom runtime controls shouldn't be too difficult. For example, with the Shield Character above, you could make an avatar design studio by providing a GUI for parameters like eye separation, radius, etc. as well as a 3D handle for dragging the eyes around. The way this might work is for you to add parameters to the final Grouper palette that reflect how your player to interact with the model. Then link these parameters to subnode palettes. Finally, your GUI script would alter the top level parameters in the Grouper palette. Once this is set up, rather than a modular avatar system, each avatar would be unique. All exciting stuff, but now back to the todo list for first release!
     
    Last edited: Aug 26, 2015
  47. Zeblote

    Zeblote

    Joined:
    Feb 8, 2013
    Posts:
    1,102
    This will work at runtime? :eek: :D
     
  48. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    Models you generate with Archimatix will, of course, be assets in the runtime environment with colliders, lightmap UV's etc, comparable to any mesh-based asset imported from an external 3D modeling package such as Blender, Maya or 3D Max. As morphable as Archimatix models are in the editor, in the first release, they will essentially be static props and environments at runtime (though since the build results are hierarchies of standard GameObjects, you can attach RigidBodies to them after they are "built").

    The modeling workflow is such that you generate models/environments with Archimatix in the node-based graph editor plugin for the Unity Editor and then "build" a static model for runtime. After play testing the environment, you can return to the editor and continue modifying the model. Then "build" again and play test some more in the runtime. The "build" is instant for smaller models and a few seconds for models with hundreds of parts. Although the first release of Archimatix will not have animation palettes or an API for you to connect your runtime GUI to the model, the ability to morph the models parametrically at runtime will come in a future release after the first release. But first things first!
     
  49. CognitiveCode

    CognitiveCode

    Joined:
    Nov 12, 2014
    Posts:
    54
    I could really use this for procedural architecture for my procedural worlds. In other words...

     
    Dreamaster likes this.
  50. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,388
    CognitiveCode likes this.