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
    NICE! I went back many pages and found your first deformer post (that looked like The Flintstones) and re-read it a few times trying to understand if this was an upcoming feature or not….

    Looks like it adds some extra vertices and Jitters them? Definitely a welcome feature!

    **edit, just re-read. It is two nodes: Subdivision and Deformer.
     
  2. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Subdivision is not actually a node but a parameter added to Shapes. You will define the max length in a Shape so that the straight-aways have points added. As these subdivided shapes make their meshes, then the meshes have more vertices and triangles, allowing deformers to do their magic.

    The Deformers are separate nodes that will have different modes of deformation (as opposed to the Jitter node), such as Spherical, Taper, Twist, etc. ;)
     
    Last edited: Aug 3, 2017
    neoshaman and wetcircuit like this.
  3. trilobyteme

    trilobyteme

    Joined:
    Nov 18, 2016
    Posts:
    309
    Great to hear (re: the exporter).

    And yeah, what elbows said. A Unity asset package can include either fully contained packages in them (Playway water comes to mind, all the demo scene content is all bundled up and self-contained inside a demo content package), or you can include a link to a supplemental download (Fog Volume springs to mind - there's a URL link that when double-clicked, starts a download in your browser of choice for the demo content for that version).
     
    RuinsOfFeyrin likes this.
  4. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Heya Folks,

    So I got sidetracked a bit last night and this morning, and as a result I present to you the first of many Archimatix Playmaker Actions.

    This package contains three separate Playmaker actions that allow you to interact with your AXModel's. These actions are for setting an exposed Float, Int, or Bool parameter on an AXModel.

    This should allow those of you who use playmaker to integrate playmaker more seamlessly with Archimatix without having to worry about generating a Controller Script.

    These are just the tip of the iceberg. Enjoy.
     

    Attached Files:

    Last edited: Aug 4, 2017
    wetcircuit, christougher and roryo like this.
  5. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Robot Kyle is starting to wonder if the new subdivision parameters and Deformers aren't beginning to warp his mind!

    Archimatix 2017-08-03_10-31-15_PM.jpg Archimatix 2017-08-03_10-32-11_PM.jpg

    This is a DomicalDeformer operating on a subdivided Box and a subdivided Extruded ShapeMerger between a Sector and a subtracted Circle.

    DomicalDeformer.gif
     
    Last edited: Aug 4, 2017
    DasBiot, wetcircuit, red2blue and 5 others like this.
  6. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    I'm going to use "domical" in casual conversation today and see if anyone believes it's a real word...
     
    protopop, awesomedata and roryo like this.
  7. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Archimatix is all about big words! Especially architectural nouns that can be turned into adjectives!
     
    wetcircuit likes this.
  8. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Subdivision adds more detail to a form interactively, so you can choose how many added triangles you need to get the deformation you are using.

    Subdivision.gif

    A new AXer just suggested by email that the Detail level slider go higher than 1 to add detail rather than reduce it. I will try to hook the subdivision parameter to the Detail slider so that it can go above 1.... maybe, just maybe even up to 11!
     
    DasBiot, radimoto, MasoInar and 6 others like this.
  9. punk

    punk

    Joined:
    Jun 28, 2013
    Posts:
    408
    that is really cool :)
     
    roryo likes this.
  10. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    I guess the situation will be "comical"!
     
    roryo and wetcircuit like this.
  11. Nevercallmebyname

    Nevercallmebyname

    Joined:
    Nov 18, 2013
    Posts:
    120
    This is going to be very very useful
     
    roryo likes this.
  12. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    Upcoming deformers:
    • Steepleable
    • Vestibulish
    • Moating
    • Cupulafying
     
    protopop, roryo and pixelsteam like this.
  13. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,502
     
    polytropoi, roryo and wetcircuit like this.
  14. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Fine-tuning the triangulation algorithm... Archimatix 2017-08-05_11-54-16_AM.jpg Archimatix 2017-08-05_11-54-04_AM.jpg Archimatix 2017-08-05_11-53-26_AM.jpg
     
    DasBiot, red2blue, pcg and 2 others like this.
  15. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    Ahh, I was going to ask if we can we shift the deformer X,Y..., or if it's about shifting the input mesh off center…?
     
    elbows likes this.
  16. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    The deformers will have their own handles and relatable parameters so you can move the deformers themselves around.:)
     
    wetcircuit and elbows like this.
  17. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Definitely very useful @roryo !

    I hate to ask for more, but is there any way we can have just a simple slope or curve deformer that can be precisely lined up and rotated in 2D in such a way that it lands on the surface of another shape extrusion (like a bridge), then triangulate the resulting mesh?

    For example, say I have a shape on the ground plane and I want to bridge it with the surface of another shape extrusion, essentially attaching the shape as precisely to the edge of it as I can, sloping it either up or down from the current surface, but NOT having the same level of downward extrusion as the two shapes it is bridging. Does this sound like something that can be done easily enough?
     
  18. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Triangulation seems to be getting robust!

    DomicalOculi.gif

    This is just a circle merged with a RadialRepeated smaller circle, Extruded and then domically deformed.

    Archimatix 2017-08-05_01-06-48_PM.jpg
     
    Last edited: Aug 5, 2017
    Xepherys, punk, DasBiot and 5 others like this.
  19. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    If I am understanding this, it sounds like the SkewDeformer should be able to achieve this.
     
    awesomedata likes this.
  20. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    This is so beautiful I'm about to cry!
    oprah-ugly-cry.jpeg
     
    roryo likes this.
  21. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Here's a temple bender:

    TempleDeformer.gif

    And with the DomicalDeformer output passed into a NoiseDeformer node:

    TempleBenderNoise.gif
     
    radimoto, punk, DasBiot and 3 others like this.
  22. brisingre

    brisingre

    Joined:
    Nov 8, 2009
    Posts:
    277
    wetcircuit and roryo like this.
  23. SixThreeZero_Studios

    SixThreeZero_Studios

    Joined:
    Jul 18, 2017
    Posts:
    106
    Can you offset the deformation? So for instance i could set it so the origin of the domical deformer is not the center of the object?
     
  24. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @SixThreeZero_Studios - yes, you can offset the DomicalDeformer. Deformers are nodes like any other in the graph, so you can adjust their transformations and relate them to any other parameter from other nodes. :)
     
  25. mons00n

    mons00n

    Joined:
    Sep 18, 2013
    Posts:
    304
    I encountered a strange issue last night related to Archimatix being in my project. For our avatars we are using UMA's wardrobe system which defines a wardrobe item via a scriptable object. With Archimatix imported every time I altered a piece of data on the item Unity had to contact my cache server and rehash the asset. I also noticed other things I normally did running a bit slower (saving scenes, playing scenes, etc). As soon as I removed Archimatix however, everything went back to normal.

    Does Archimatix have some sort of post processor that runs every time an asset is modified?
     
  26. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @mons00n - what version of AX are you using? Previously, AX reloaded the entire 2D and 3D libraries on change to the project's asset database by reading all the JSON files representing parametric objects. A change was made in 1.0.5 to alleviate this situation. Could you be using a version older than 1.0.5?
     
  27. mons00n

    mons00n

    Joined:
    Sep 18, 2013
    Posts:
    304
    Confident that I am using 1.0.6; I just downloaded it a few days back.
     
  28. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Might be a good idea to check to be sure. The version number is in the lower left corner of the node graph editor window:

    Archimatix 2017-08-08_02-18-55_PM.jpg
     
  29. mons00n

    mons00n

    Joined:
    Sep 18, 2013
    Posts:
    304
    Just confirmed I am running 1.0.6
     
  30. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Ok - thanks for confirming. Do you notice this when AX is by itself in a project or only in combination with UMA?
     
  31. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    I have not used the cache server before so maybe I am wrong here. But isnt that how the cache server functions? You alter an asset, and it caches a copy of it? This is why they tell you your cache server needs lots of storage as it will store multiple versions of a cached asset.

    What i am guessing here is that this rehashing normally happens rather quickly and you are unaware of it however its trigger AX's functionality that takes place after a code reload... which gives decent pause to things.

    I could be WAY off here, but its my edumacated guess in the dark. Has anyone tested AX with a cache server enabled?

    And actually, it could be UMA's fault not the cache servers. UMA could be triggering AX's reload functionality.

    Or it could be a result of saving the scriptableObject. It could cause unity to detect assets have changed, and trigger an asset database reload. Also something that happens fairly quickly under normal circumstances.
     
  32. mons00n

    mons00n

    Joined:
    Sep 18, 2013
    Posts:
    304
    Everything goes back to "normal" when Archimatix is removed from the project which leads me to believe one of the asset processors is being triggered when maybe it shouldn't be. I even disabled the cache server at one point because I had a similar thought but the problem still existed. I also don't think it is UMA specific but I don't currently have a lot of time to troubleshoot it (we have a release coming up); one of the things that leads me to this conclusion is that the startup of any scene had a considerable delay as well, all of which goes away when Archimatix is removed from the project. There's also a chance that Archimatix is doing acting up due to another plugin in my relatively large project. I'll get with @roryo on slack when I get some free time to sort it out.
     
  33. tapawafo

    tapawafo

    Joined:
    Jul 25, 2016
    Posts:
    170
    Hello,

    First off, amazing work! I've followed this asset for a long time and it's really outstanding. I have a quick question, however. Is there any way to accomplish a LOD system for runtime procedural models made with archimatrix? Have you considered this issue, when using runtime generation?

    It seems to me that this isn't really feasible. And sorry if this has been asked - I tried searching this thread for a similar question but couldn't find it!

    Thanks.
     
    roryo and awesomedata like this.
  34. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    @matteumayo
    I'm not sure how to do it myself, but there's most likely a way to access the "detail" sider through code easily enough, which could (in theory) give you a sort of LOD-on-command (depending on how you setup your model.)

    From what I understand, if anyone outside of @roryo would know how (or if it's really possible) to do something like this currently, I'd think your best bet would be to ask @RuinsOfFeyrin since he knows a lot about how AX operates internally. He has made some pretty nifty actions already for it, so I'm sure he knows how to deal with meshing pretty well.
     
    Last edited: Aug 10, 2017
    tapawafo likes this.
  35. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    @matteumayo

    Awesome data is correct. Assuming everything is setup properly you could access the `segmentReductionFactor` property of an AXModel and alter this value to do something like a LOD system.

    I havent tested this, but giving a quick look at the code you would want to do something like.

    model.segmentReductionFactor = <value>
    model.isAltered();
    model.autobuild();


    Also, since this is such a good idea. Ill add it to the list of Archimatix Playmaker Actions im working on.
     
  36. topofsteel

    topofsteel

    Joined:
    Dec 2, 2011
    Posts:
    999
    I'm new to this, it's not clear what i'm doing wrong. I'm trying to set the size of a rectangle to repeater sizes. And the properties of the connection indicate conflicting values. this = that & that = this. What am I missing? Thanks.

    Edit:
    Turns out I just needed to adjust the repeater size slightly. An apply or regenerate button would be helpful.

    Amazing asset!
     

    Attached Files:

    Last edited: Aug 12, 2017
  37. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @topofsteel - welcome aboard!!

    Repeaters don't automatically adjust the forms of the things they are repeating, but that is coming soon. In the meantime, you can expand the hidden RepeaterTool nods in the Repeater and connect the ActualBay sizes to the width and height of the repeated shapes:

    Archimatix 2017-08-12_10-10-08_AM.jpg

    In the relation expression, you may want to multiply the ActualBay by something like .9 to leave a gap between.
     
    wetcircuit likes this.
  38. StaffanEk

    StaffanEk

    Joined:
    Jul 13, 2012
    Posts:
    380
    Hi, I just purchased your expensive asset and tried to import a Wooden Floor Plane via GameObject/3D Object/Archimatix/Wooden Floor Plane. And I see this:

    Nothing

    This leaves a terrible first impression. Did i do something wrong or is this an oversight?
     
  39. Xepherys

    Xepherys

    Joined:
    Sep 9, 2012
    Posts:
    204
    Any update on this?
     
  40. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @StaffanEk - sorry you ran into this bug right off the bat. A bug slipped into the last update that blocks some of the library items from being instantiated from the top menus.

    Until the next update, you should be able select all the same library items from the left sidebar menu of the node graph editor.
     
  41. StaffanEk

    StaffanEk

    Joined:
    Jul 13, 2012
    Posts:
    380
    @roryo It's alright. I have been having a lot of fun just following, and deviating from the tutorials. This is a great asset.
     
    protopop and roryo like this.
  42. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    I have actually been unable to test them with substance painter. Substance painter fails to launch properly on my machine. Tried everything including uninstalling, reinstalling, driver updates, voodoo chants, etc etc. It loads kinda, and immediately goes "poof" like i never tried to load it.

    I've updated and uploaded new version of all the packages that include the obj exporter. The fbx exporter seemed to be working fine on my initial tests, but two testers have reported back that on more complex models then i tested on its fumbling things. Had a busy work week this week so I have hardly looked at my computer let alone anything related to AX, but that is what my day is dedicated to tomorrow.
     
    Xepherys likes this.
  43. Nevercallmebyname

    Nevercallmebyname

    Joined:
    Nov 18, 2013
    Posts:
    120
    Trippy
    I'm having so many ideas now about how to use that.
     
    roryo likes this.
  44. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    You're not the only one -- I was excited to try SP on my laptop with its "live-link" to Unity, but apparently it's got some weird software voodoo that makes it a pretentious driver snob. It won't even load a 3D viewport on my Toshiba due to the manufacturer's 'custom' drivers being "out of date" -- (I have Intel HD 4000 drivers, if anyone's interested).
     
    Last edited: Aug 13, 2017
  45. StaffanEk

    StaffanEk

    Joined:
    Jul 13, 2012
    Posts:
    380
    How exactly can I make hard edges? The documentation is not very search friendly. Currently the mesh I am making has ugly soft edges. Is there a setting for soft angle threshold somewhere?
     
  46. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    In most nodes you can flip open the input triangle and find the Break Geom/Norm settings. Screen Shot 2017-08-13 at 8.23.45 AM.png
     
    StaffanEk likes this.
  47. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    The Break Geometry (the left hand of the slider) creates a uv break, while Break Normals (the righthand handle) controls the angle at which the normals go far hard to soft.

    In a PlanSweep, you can control the breaks for Plan and Section separately to get effects like this #7 and this #1314
     
    StaffanEk likes this.
  48. topofsteel

    topofsteel

    Joined:
    Dec 2, 2011
    Posts:
    999
    I'm not sure I was clear. I had the repeaters working fine. I was trying to get another shape to take the size of the repeater 'Size', (overall size). Like the floor in your Domino House example. After connecting them, it didn't update. I had to adjust a control slightly on the repeater for the shape to adjust to the Size of the repeater. The 'Rebuild' button seems like it may update everything, but it doesn't'. Other node editing software I use has a 'Process all nodes' to force everything to update.

    Again, awesome asset!! I spent some time with it yesterday and I have a number of questions, comments and possibly wishlist items. My perspective is from a architectural / engineering standpoint. It's entirely likely I missed the functionality. Or there are ways to accomplish what I want with workarounds.

    - Downstream workflow? The current bi-directional workflow was a surprise to me when I figured it out. For example, if you want something to be twice the size of something else, you add this * 2 to the relation expression. But you also have to add that / 2 to the other relational expression. I can't think of an example where I would want the result of an action to have the ability to change it back. Possibility control this by the direction you connect them? There also wasn't an error message when I didn't have my formulas right.

    - Copy and Paste within Relational Expressions. Or an auto-complete? :O

    - The repeater tool 'Actual Bay' size. Can this be locked? For example, if it were locked at 3, and you extended the size of the repeater, you would only get another row if extended it by 3 or more and then another after passing 6.... There wouldn't be any flex in the system.

    - Origin of the repeater at the end of a linear or the corner of a grid repeater?

    - Here is the big one, Units! Feet and inches, or even just decimal feet. I've updated other (much simpler) assets with a multiplier that converted my input (in feet) to meters.

    - Showing all connections when the nodes are collapsed. I used relational expressions in the connections a lot. When the nodes are collapses, those red connections aren't visible.

    - Smaller collapsed nodes. Name, image, and all connections

    - Possibly the content of the selected node available in a separate window.

    - A relational expression node. I would like to be able to increment a value ++ style. So one value in, and any number out. Currently i'm hard wiring in values and multipliers into the connection relation expression.

    - A value snap. Since I'm needing to change a value to get the 'floor' shape to update to the Repeater Tool size. Or even just a controlled predictable way to increase or decrease the size of something.

    - More custom nodes. One where I could control all of the values driving everything.

    I was attempting to create a parametric column grid including a slope. I used an I beam shape through a number of extrudes, each with different heights. Then fed each of those extrusions into linear repeaters. Then separated the offset of linear repeats by 'X' amount. I would like to change the size and grid spacing and maintain a consistent slope with the column heights adjusting automatically.

    I realize a lot of this may be outside scope of what you intended this asset to be. I've been doing building design for over 20 years. When parametric modeling became a thing, it added more control and precision to everything. Your asset is a unique mix, like parametric sculpting or art. And it's awesome. I just thought I would share my thoughts. Thank you very much.

    Grid.PNG
     
  49. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Thanks for this awesome feedback, @topofsteel

    You have provided so many great thoughts at once that I will respond to as many as I can in multiple posts.

    To start, I know that many parametric modelers have uni-directional relations. Bi-directional were challenging to implement, but allows you to author versatile parametric models. So while input/output connections in AX are uni-directional, flowing downstream, parameter relations are bi-directional, or rather directionless. A good example is the ArtsAndCraftsChair in the 3D library. You can select any part of that chair and move or resize it and the other elements will adjust themselves accordingly. You don't need to search through the parts to see which one is the controller. While it may take a little more time to design how the various parts should respond to various adjustments, it makes for a model that is easier for an artist elsewhere in the pipeline to play with.

    To illustrate: If I have two cylinders where the two radii add up to a 10 unit distance between them, we can relate them by defining the reciprocal expressions:
    Archimatix 2017-08-13_03-58-33_PM.jpg

    Because of this bi-directionality, the user of the model need not try to figure out which radius is driving the other, but can instead select either:

    bidirectiongears.gif

    As another example, let's say we have a cylinder atop a tapered box. The cylinder is always on the top surface of the box. To do this, I relate the Extrude Height of the box to the TransY of the cylinder.
    Archimatix 2017-08-13_03-42-07_PM.jpg

    If I select the tapered box and am adjusting that, when I increase the height, the cylinder should be lifted higher. But if I am working on the cylinder, I may think it should be lower and easier for a character to reach. At this point, I can just lower the cylinder and the tapered box will adjust itself.

    bi-directions.gif

    Another example is the Column_01 model. One person may select the abacus (or top block) to modify its proportion to the total height, while another may select the shaft to modify its own height in proportion to the height of the column. Either can work since the relations are directionless.

    column.gif

    With parameter expressions in a Grouper, as is exemplified in the AncientTemple model I am working on currently, some people may want to define the pitch angle of the pediment (a stylistic choice), while someone else may want to adjust the height of the triangular pediment without caring about what the specific angle is. For more detail, please see Step 5 of the tutorial I am working on for this.

    All that being said, if you want to lock the user of the model into a particular direction, you can simply make one of the two relation expressions blank. ;)
     
    chelnok and red2blue like this.
  50. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    The combine node is the Grouper node. The Grouper node is also important as a vehicle for adding a parameters that can act as an interface to control the grouped objects. To see the Grouper in action, take a look at the GrayShip video tutorial (the second video on the Archimatix assetstore page).