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. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    @LukeDawn - thanks for all the questions and I am glad you are digging in to AX! It sounds like the PlanDeformer may be what you are looking for.

    PlanDeformer.gif

    PlanDeformerWithATwist.gif

    PlanDeformerClosedShape.gif

    HolesInCurvedWall.gif

    In the manual page for PlanDeformer, take note of the section on how to subdivide your model for smoother deformation.

    Subdivision.gif
     
    syscrusher and LukeDawn like this.
  2. LukeDawn

    LukeDawn

    Joined:
    Nov 10, 2016
    Posts:
    404
    Hi Rory, here's the parameters used. The stair is library standard, I've not altered it. I set scene to show overlapping UVs and this is what the stair looks like.

    I get the warning on every script build, and it tells me how many objects have overlapping UVs, which is equal to the number of instances of the stairs I've got in the scene.
    Image2.jpg
     
  3. LukeDawn

    LukeDawn

    Joined:
    Nov 10, 2016
    Posts:
    404
    Thanks for all the info on the Plan Deformer, I'm going to have a play with that next.
     
  4. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
    Hi all, I noted some discussion about lofting earlier in the thread, did you conclude that you are not able to loft between two profiles in Archimatix? I'm looking to create a vase who's side profile is a different shape to the front profile. Thanks for your consideration..
     
  5. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    I had almost completely forgotten about this since the documentation was never completed. However, I wanted to ask a couple of questions about it:

    1. Does this deformer work for any mesh (i.e. prefab mesh instances)?
    2. Is there any way to "lock" the first and/or last deformations to the endpoints of an open shape? -- For example, say I have a tileable wall and I want it (and its UVs) to start/stop at specific point(s), rather than being dragged around and losing mass like your gif suggests.
     
  6. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @ArneStudio - the Lofter node is in development. It helps to hear that people are interested in it. Let me see what it will take to sneak it into the next release. ;)
     
    ArneStudio and awesomedata like this.
  7. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Yes, the PlanDeformer works with PrefabMeshes, but AX cannot subdivide them, so the Prefabs should already have decent subdivisions before coming into Unity. With the second point, it seems like you are suggesting that the mesh would stretch to make sure it always goes from the start of the curve to the end no matter how long the curve gets. It does not currently do this, but that would be a nice feature. In the meantime, you can scale the source node in the X-axis of the object until it aligns with the end of the curve.
     
    awesomedata likes this.
  8. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Nice. I thought I remembered you saying that. :)

    Yep. That's what I'm after. It'd be great to have the uvs "snap" accurately too (for repeated textures). That's probably more important in my case, as I'd be using this feature to make modular pieces.
    As it stands, it is currently hard to align meshes using standard AX deformations. Being able to stick to a curve's shape/size no matter what would be very useful.
     
    Last edited: Nov 2, 2018
  9. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Last edited: Nov 11, 2018
    syscrusher, Hitch42 and AthrunVLokiz like this.
  10. kaniballo

    kaniballo

    Joined:
    Sep 2, 2013
    Posts:
    8
    so do AX support Unity 2018.3 (beta) - new prefab workflow,...
     
  11. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    I'd like to submit a feature request: Would it be possible to have the Combine Meshes flag optionally *exclude* any Prefab Instancer nodes from its action? I'm making large models that include prefabs where I'd like to put a LOD group on the individual prefabs, then use the Combine Meshes on the remainder of the AX geometry (that is, what AX actually creates rather than just placing prefabs in a Repeater node) and LOD the combined meshes. Right now I'm doing this with separate AX models, but that makes it tricky to keep everything aligned.
     
    eelstork likes this.
  12. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Applying operations against a large group of nodes (or their instances) at one time has been a feature I've been requesting for a while.

    It would definitely be useful to apply a sort of instance "mask" selection to instance groups to be able to "hide" them from a particular operation, while letting them participate in others.

    What say you, @roryo?
     
  13. joferjoe

    joferjoe

    Joined:
    Feb 2, 2016
    Posts:
    95
    Id love to submit a feature request too

    Id love a way to do conditionals without having to write if statements in turtle o_O

    Also setting uvs or materials per edge of a shape instead of having to cut the shape into a bunch of pieces and assign different materials to each would be lush :D
     
  14. dariakarpova

    dariakarpova

    Joined:
    Nov 1, 2017
    Posts:
    3
    Can Archimatix do ruins? As in, many irregular broken looking shapes in a single scene? I looked through many examples but all of them are kind of complete shapes, even when asymmetrical.
     
  15. JLO

    JLO

    Joined:
    Nov 11, 2012
    Posts:
    46
    Is anyone here having problems with "PlanSweep" node disabling bottom caps when it is checked and enabling top caps when it's unchecked? Both resets usually occur after some adjustments are made to a model. I'm using the latest version of Archimatix.
     
  16. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    There are a number of standard Archimatix nodes that you may find helpful. The list of nodes is here: http://www.archimatix.com/nodes. Here are some specific suggestions to look at:
    • The nodes under the Deformers section are all going to be interesting for your purposes. Consider having input meshes at a fine-grained modularity level then passing each through slight deformation using one or more Deformer nodes to generate a procedural library of basic shapes with subtle variants. Then you link those shapes into larger models.
    • The Channeler node (http://www.archimatix.com/nodes/channeler) is tailor-made for selecting one variant from a set of interchangeable options. You may need a little editor or runtime scripting to take full advantage of it. You could use a parallel group of Deformers to make variants of a single input mesh (even something simple like an AX-generated rounded cube to make a stone block), then use Channeler to select these variants into your primary model of a larger object such as a wall or archway.
    • Take a look at the Jitter tool. It's not yet documented online, but bring it up in your Archimatix canvas and experiment on a test model.
    • If needed, there is also support for custom nodes.
    If these methods don't solve it, you may also want to consider combining Archimatix with a procedural level tool such as Dungeon Architect. Use AX to generate a library of modular shapes such as three or four midsections of a column, plus a couple of variants of base and a couple of variants of top. Then use DA or similar to permute these within your level.

    @roryo Looking at the node documentation, I have yet another feature suggestion. For the Prefab Instancer, how about allowing a list of prefabs instead of just one, and randomly selecting from the list at model rebuild time if there is more than one choice? :)
     
    photonic and wetcircuit like this.
  17. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    Here's another suggestion: You may be able to create a lot of visual variation without actually varying the geometry, using Archimatix's capability to specify UV position and scale for each Material node. Here's what I have in mind:

    Using a tool like Substance Designer, make a single PBR material that is actually an atlas of four variants of itself, one relatively clean, the other three with some cracks and grunge in different places and chips along the edges. If you want 1K texture quality, make the atlas 4K overall. In your Archimatix model, make sure this is a single *Unity* material to maximize GPU performance, but let it be four *Archimatix* material nodes with different UV positions for each. In AX, set the UV scale so your object only uses 1/4 of the atlas area. Now you can make variants on your shape just by using different parts of the material atlas. If you're creative with your height and normal maps and your grunge maps, and you use good shaders in your Unity material (I highly recommend the Uber shader asset if you're not using SRP yet), you can get some outstanding results without actually varying the geometry.
     
    wetcircuit likes this.
  18. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @kaniballo - When saving an Archimatix model as a Prefab, AX saves any mesh
    Thanks for these suggestions, @syscrusher!

    Per your last suggestion, I could add a RandomizeChannel checkbox to the Channeler node so that you could create several Prefab nodes and feed them into a Channeler. Currently, you choose the channel manually.
     
    syscrusher and awesomedata like this.
  19. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @kaniballo - Archimatix generates standard Unity Prefabs, so they should all work in the new Prefab workflow like any other Unity Prefab.
     
  20. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Great suggestion, @syscrusher - I will have to noodle over how to do this. For efficiency, AX currently passes baked meshes on to downstream nodes, rather than GameObjects. But this would be a worthwhile feature. Perhaps this could be integrated into the auto-LOD workflow of AX that we discussed at Unite. For example, if a Prefab has an LOD Group, then when AX builds LOD0, it could use LOD0 from the Prefab.
     
    syscrusher likes this.
  21. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    @joferjoe, do you mean a simple graphical scripting workflow with option pulldowns for parameters and for operators? Or a dedicated text field to write the condition out that is not in the Logic texture?

    Per the second item, I am planning to ad a uv tag to turtle script so that at a certain point in the drawing of the 2d shape, say of a section, you can lock in a certain V.
     
  22. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    In addition to the suggestions @syscrusher made, I would say that a workflow from Archimatix to Polybrush or out to zBrush via FBX might work also. Archimatix is good at logical constructions and adding noise, but for real idiosyncratic editing, you might want to take the meshes AX generates and the use a brush-based workflow to decimate the mesh artistically.
     
    syscrusher likes this.
  23. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @JLO - could you give me a specific set of steps so I can try to reproduce the bug you are seeing? Thanks!
     
  24. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    upload_2018-11-29_16-54-29.png

    @roryo --

    Any idea how to make the edges of an AX shape line up UVs so that it would work with a tesselated texture better? Also grid-based textures?


    Also, it would definitely be useful to be able to apply a sort of "mask" selection to groupers to be able to "hide" some of their nodes from a particular operation, while letting them participate in others after that by perhaps "unmasking" them after the fact.
     
    Last edited: Nov 29, 2018
  25. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    Brilliant! I love the idea.
     
  26. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    I see your point about the downstream data handling. It almost seems the long-term way to handle that would be that instead of nodes passing a mesh, they would pass some kind of a struct that can handle mesh plus other things. That could get complicated really fast. When I wrote the suggestion I thought you were doing the baking and combining at the end; I didn't realize you were baking at each node level. That makes sense now that I think it through more deeply.
     
  27. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Thanks for posting a pic, @awesomedata - that always helps! What are those gaps at the polygon edges? Could you send me the scene?
     
  28. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Seems like the tesselation factor is killing the mesh, but I'm pretty sure its because its UVs are not continuous + lining up (and I cannot get them to line up either) and aren't welded. Since verts are not welded between the top/bottom caps and the sides, perhaps an option to do this would fix such issues with tesselation?

    Here's the scene.
    Using the latest version of AX and 2018.3b11. Also using DX11_Tesselation package, which is free on the Asset Store. Below is the graph. Pretty simple, nothing fancy -- just a bevel and a (closed) freecurve.

    upload_2018-11-30_8-24-28.png
     
    Last edited: Nov 30, 2018
  29. ThomasLightweave

    ThomasLightweave

    Joined:
    Sep 30, 2016
    Posts:
    26
    Hey,
    I'm looking for some support with the Archimatix Pro unity plugin

    Ideally, we are looking for a system that supports linked(prefabs) of an AXModel. This is to for example create a bridge AXModel, and then prefab it in a way that allows for either of the bridges AXmodels to be updated and have the changes ripple to both.
    Is this at all possible with the current state of the plugin?
    What would be the best approach to achieve something like this?

    As a workaround, I figure if I could link just the shapes I could make it work.
    I'm trying to add a 2Dshape as a runtime parameter. However, when I click the runtime checkbox and generate the code, it generates a variable type of " " (a space) with the get method returning "P_Extrude_0_Plan.;" which is also broken.
    Is there a fix or update anywhere for this. Is there any way I can get a 2DShape from an AXModel and give it to another AXModel?

    Code (CSharp):
    1.     public  Extrude_0_Plan {
    2.         get {
    3.             if (model != null)
    4.                 return P_Extrude_0_Plan.;
    5.             return ;
    6.         }
    7.         set {
    8.             if (P_Extrude_0_Plan != null)
    9.             {
    10.                 P_Extrude_0_Plan.setValue(value);
    11.                 parameterWasAltered = true;
    12.             }
    13.         }
    14.     }
     
  30. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Additional 2d shapes cannot be added at runtime. These must all be defined at design time. They can be altered though, as long as they exist already.

    If we had more control over the graph via code, pooling could work in this case.
     
    syscrusher likes this.
  31. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
    Hello Archimatix Experts, What is the best way to import a curve and use this as a freecurve for secondary operations? I can decimate the original curve into points with XY coordinates and import them if that is any easier. Suggestions greatly welcome :)
     
  32. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    I guess it depends on how complicated your curve is. You can trace it with the FreeCurve, or you can build a custom node with turtle script and the bezier commands: http://www.archimatix.com/manual/archimatix-turtle-script-api

     
    syscrusher likes this.
  33. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
  34. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
    Hi Wetcircuit, Thanks for the suggestion. I can see how I could make a curve with the turtle API but I have lots of different curves (currently in DXF format) and it would be very time consuming to recreate each one manually. I can decimate the curves into XY co'ord points and then manually type these into the freecurve node but ideally I would like to import this X,Y data automatically. depending on how I decimate the curve, which will depend on the reproduction quality I require, I may have up to 100 points per curve. any suggesting greatly received.
     
    syscrusher likes this.
  35. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    There is an SVG Importer plugin. It would be a manual process of converting each DXF to the right format of SVG, then importing each shape through the plugin….

    Once the shapes are imported, save them as new nodes in your Unity project and use them like any 2D shape node (scale, rotate).

    If you have a lot of these shapes, or this is an ongoing workflow, you could create a custom C# node: http://www.archimatix.com/manual/creating-custom-nodes
     
    ArneStudio and syscrusher like this.
  36. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
    Thanks Wetcircuit, I'll check that out, is the SVG importer only available through 3rd parts bolt on such as 'pro tools and nodes'?
    Separate question when creating a freecurve is it possible to convert all points to smooth curves vs sharp corners or does this need to be done point by point using the handles. Thanks
     
  37. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Yes, 3rd party only.


    Manually. Point. By. Point. :(
     
  38. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @ThomasLightweave - Do you mean you would like to instantiate the bridges at runtime and alter them?
     
  39. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    A select all points would be a great feature! Then you could hit the convert button. This would also be handy if you want to move all the points at once.
     
    awesomedata likes this.
  40. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Quick question, @roryo -- did you ever get to look into my issue with tesselation in the post above?
    Any idea if this can be fixed or worked around somehow? -- I'm depending on the ability to have tesselation work with my freecurves.
    Edit:
    Here's one way to handle tesselation seams, but I'd prefer an easy way to do this via AX rather than via AX and probuilder:



    Also -- just curious if you saw this:

     
    Last edited: Dec 8, 2018
  41. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Thanks for posting this video, @awesomedata. The tessellation shaders don't work well where there are UV seams. In the video above, a plane is used, which is a topology that is fairly easy to get rid of UV seams. With a closed 3D topology, such as a cube, you have to have UV seams somewhere. Also, where ever there are hard edges, there need to be multiple vertices per point.

    The standard Unity cube primitive with its hard edges does not do well with tessellation shading:

    Capto_Capture 2018-12-09_02-15-12_PM.jpg


    An Archimatix cube fairs a little better because the UVs values are smaller in the default configuration than the standard Unity Cube primitive:

    Capto_Capture 2018-12-09_02-25-28_PM.jpg

    If you open the Plan input of the Extrude for the cube, you can smooth the Plan shape by sliding the Break Geometry and Break Normals value to a high angle (above 90) to get the sides to share vertices and UVs:

    Capto_Capture 2018-12-09_02-31-38_PM.jpg



    The shader I am testing with uses only the vertices breaks, so it is actually the Break Geometry angle that matters most:

    Tesselation1.gif

    For the extrude caps, the same verts from the sides would have to be used, meaning that the UVs on the top would not make sense.For example, the v-value for all for points of the top quad would be the same. While it is possible to try this, it will take some coding to add the feature and under a regular material, the top surface would not display its texture properly. It may be that the tessellation shader would use the uv values of the top edge to tessellate, but I am not sure what it would do with texture.

    In the meantime, you can mitigate the effect of the top cap in some cases by adding a bevel and increasing the Lip Top:

    TesselationLipTop.gif
     
    Last edited: Dec 9, 2018
    awesomedata likes this.
  42. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Thanks, @roryo -- but in my case, the top (cap) texture is where it's most important for UVs to match up (for 2D purposes in general), so I really do need some way to unify the mesh. D:

    Perhaps the seams could be diverted to the "bottom cap" and unify just the top cap UVs? -- I could live with this by "sinking" the bottom of the mesh into the ground, or removing the bottom cap entirely.
    I am using this from a top-down perspective (so I can make use of the freecurve+extrude to generate geometry of a particular shape). The side verts/uvs can be fudged by AX a bit (since they'll be less prominently seen), and I'm okay with that. Doing it this way, they can be more predictable, since the extrusion of the sides would allow managing how "regularly" (and at what frequency) the verts might appear -- just as the geometry break angle is handled now.

    Two suggestions to handle UV seams:

    1. Break Angle/Geometry Fix -- Maybe the break angle could introduce a few extra verts in certain places to help match up the side uvs with the top/bottom cap uvs?

    2. Mesher Mode -- A new mode to mesh things with (such as Tessellation) could be used by taking (post-bevel/taper geometry) projected to "top" and "bottom" caps from the 2d shape and offer the option to add a vertex color to the vert edges at the top/bottom and let the shader "blend" textures (based on vertex colors, rather than "brute-force" use of separate materials). This way, the seam blending could be handled more by the shader (and less by the geometry). Maybe this could be implemented as a separate way to generate geometry in certain meshers (like the extrude node?)
     
  43. JLO

    JLO

    Joined:
    Nov 11, 2012
    Posts:
    46
    @roryo This time (unfortunately) I don't know how to consistently reproduce the "Enable/Disable Cap" bug :(. When ever I do find out how to trigger it, I'll bring it to your attention.
     
    roryo likes this.
  44. TCROC

    TCROC

    Joined:
    Aug 15, 2015
    Posts:
    230
    @JLO @roryo When doing step Step 7.18 in chapter 7 of the tutorial in the documentation that comes with the asset, disabling the top cap doesn't do anything. Current Unity version: 2018.2.14f1.

    On another note, @roryo do you have a Discord server we can join? Several other assets on the asset store have one and they are extremely helpful for us to work together and help each other as a community. With an asset of this scale, I believe it would be extremely useful for you and us.
     
  45. JLO

    JLO

    Joined:
    Nov 11, 2012
    Posts:
    46
    Hi @TCROC make sure to adjust the radius in the lathe node, that should solve your problem :).
     
    TCROC likes this.
  46. TCROC

    TCROC

    Joined:
    Aug 15, 2015
    Posts:
    230
    @JLO Thanks! That worked! :) Btw, @roryo, this is where Discord servers are very nice. :)
     
  47. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    There is an official Discord here: https://discord.gg/u6gmFCN

    It hasn't been used much, but join. use it.
     
  48. TCROC

    TCROC

    Joined:
    Aug 15, 2015
    Posts:
    230
    @wetcircuit Thanks! Is it advertised at the top of the forum? If not, it should be so we can get more people.
     
  49. ArneStudio

    ArneStudio

    Joined:
    Sep 12, 2018
    Posts:
    29
    Hi All, Has anyone been experimenting with the SVG to Turtle Plug in (Pro tools and nodes for archimatix) I'm finding it very buggy. It may be that it's looking for specific SVG settings I'm running the default options out of Illustrator. It wont import non bessier curves meaning your path needs to have at least one. Start and end of curves are automatically connected meaning it cant be used for lathe node without additional clean up steps. The seeming useful tabs allowing you to position the imported curve wrt it's origin (critical for late reapplication) don't function. Not a great start do let me know if you see different behaviour.
    Thanks
     
  50. C_p_H

    C_p_H

    Joined:
    Nov 24, 2014
    Posts:
    153
    @roryo
    After upgrading to Unity 2018.3.0f2 I've noticed the upper left panel in the Archimatix Editor Window has disappeared. Not seeing any related console errors for this new behavior either & it occurs upon every uninstall/reinstall. Any suggestions for a fix would be greatly appreciated.
     

    Attached Files: