Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    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,479
    Archimatix 2017-10-09_07-33-58_PM.jpg

    Nothing like a little ShapeMerging using GridRepeater2D w/ Jitter to get the week started!

    Archimatix 2017-10-09_07-44-47_PM.jpg
     
    marie-hmm, puzzlekings and tapawafo like this.
  2. HarryCodder

    HarryCodder

    Joined:
    Feb 20, 2015
    Posts:
    84
    Hi !

    Just bought and downloaded Archimatix because it looks impressive but I immediately run into a problem when using the .Net 4.6 runtime.
    I'm having a lot of "FormatException: Input string was not in a correct format" exceptions from System.Number.ParseDouble calls. I guess the culture was not set to invariant when calling these methods.
    I've run into this problem with my own code so I'm pretty sure it's that (mind that I'm french so I run a french system, you'll probably won't have this problem yourself).
    It's a change made by the net framework that's really annoying in my opinion and if your code is not running in a dedicated thread, I believe you have to specify the invariant culture in all you calls to Parse[Type] methods. Otherwise you can just change the default culture of the thread to invariant.

    I can just use .Net 3.5 in the meantime but it would be nice to see that fixed anyway.
     
  3. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @HarryCodder - welcome aboard! Thanks for reporting this .Net 4.6 issue. Let me take a look....
     
    syscrusher likes this.
  4. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,104
    @roryo I updated my sandbox project from 2017.2b11 to 2017.2.0f2 (release candidate) and imported the fresh AX from the Asset Store from today's update, downloaded within this same new version of Unity to make sure I get the latest compatibility. All your demo projects work 100% of the time, including the manipulation gizmos. That basic stair in my otherwise-empty scene failed to upgrade again. Creating a new one worked perfectly.

    Is there an issue with the AX objects not being at the scene root, by chance? That's the only thing I can think of that I might be doing to induce the problem.

    This is an empty sandbox project created just for the purpose of learning Archimatix and a couple of my other newer tools, so please let me know if any testing I can do would be helpful for you. :)

    BTW, impression so far: I've got a learning curve ahead of me to master AX, but holy crap is it powerful! And I'm loving the fact that your demo scenes show how to integrate Substance materials, which I use heavily.

    EDIT: I also have, and really like, the spline asset Curvy. That and Archimatix are going to be dynamite together.
     
    roryo and wetcircuit like this.
  5. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Hey Everybody,

    I Just wanted to let you all know my latest package for Archimatix has finally been released.

    200x124.png

    Archimatix Essentials is a collection of small changes to the AX graph window and a collection of new tool windows for Archimatix that I feel complete a good workflow and is on sale for it release for only $10.00 for roughly one week.

    For a full description of what Archimatix Essentials does please visit its Asset Store Page
    Brief Feature List: Re-designed Graph View, Customizable Tool bars, Graph Mini Map, Exposed Parameter Manager, Expression Editor Window, Right click on graph for context menu.



    While your at it if you haven't already don't forget to check out some of the other add-ons for Archimatix.

    256x124.png 256x124.png 200x124.png 200x124.png


    As strange and obtuse as the name may be marketing-wise -- these nodes are a must-have for Archimatix. There is core parametric functionality missing in AX that these cover in spades.

    The images in the description don't lie -- you can literally change the very floorplan/foundation or even the shape of a complex parametric building/column/wall/etc. with these just by swapping the value of a variable.

    Although the icons aren't pretty, they do help you 'get' what this package does -- and it can do a LOT, including allowing you to swap out the entire path of a PlanSweep or shapes of a Lathe, or even the layout of an entire building -- all based on logical inputs or switches -- and not to mention these shapes can be pulled from either an ordered OR a random list, and then repeated across a grid for example.

    This package is really handy for runtime too!

    This node pack is excellent, even better is the amazing support by the developer.

    The nodes add significantly to tasks that are fairly crucial for procedural modeling of realistic models. The ability to randomly add meshes from the mesh list node in a repeater is huge.

    Concerning the great support I mentioned, I wrote the dev an email asking about the documentation and the material list node functionality (specifically if it was possible to have the material list randomly assign materials to duplicated meshes.) He replied in less than 24 hours, was very polite and willing to answer any questions. Better still, although the material list node did not have the ability to randomly assign materials, he was more than happy to add the feature to the node and upload an update.

    Archimatix has become one of my favorite Unity tools. 630Studios' plugins up the game:
    SHAPE LOGIC adds nodes to Ax's 2D Shapes
    MESH & MATERIALS adds nodes to Ax's 3D meshes

    ARCHIMATIX PRO TOOLS & NODES is different because it adds "box breaking" nodes to Archimatix. Ax models use internal node logic but node wiring is silo'd. Pro Tools & Nodes get different Ax models communicating with each other, either sharing variables pier-to-pier with the Instance Node, or across all models using the Scene Parameter Node. Ax models can now have nested inter-communicating prefabs, or instances can be updated across a scene. It's runtime Ax on steroids!

    Command Node makes conditional logic possible by switching on/off blocks of code. It's the script equivalent of 630Studio's Shape Logic and Mesh & Materials plugins.

    SVG-to-Turtle Node makes importing line art as simple as a few clicks. Vector logos and text, or CAD artwork (floorplans!!!) imports as a 2D shape node. You can break up the SVG and extract the lines for compound shapes separately, giving you more control in the Ax graph.

    For me the SVG import was a long-anticipated must-have, but the potential for even smarter-er runtime models using nested prefabs could make Archimatix rival dungeon generators and city planners.


    As always thanks, and hope you guys enjoy the nodes.
     
  6. wetcircuit

    wetcircuit

    Joined:
    Jul 17, 2012
    Posts:
    1,409
    "TONS and Tons and tons of nodes…." :D:p
     
  7. trilobyteme

    trilobyteme

    Joined:
    Nov 18, 2016
    Posts:
    309
    I've got what is probably a really silly question, so please bear with me. I've gone through several of the tutorials, including the Ancient Roof tutorial which shows off how to set up some expressions.

    I would like to set up a couple rectangular shape nodes that I have locked to a specific aspect ratio. I'd like to have one locked to square (1:1), and one locked to 4:3 (1.33:1) rectangular, so that when I drop my parametric creations into a scene and resize, it preserves the aspect ratio. I believe that I'd do it via entering an expression into either the height or width section of the shape's geometry, but I'm not sure how I'd go about phrasing that. Can anyone out there please help me out?

    Screen Shot 2017-10-11 at 5.10.33 PM.png
     
  8. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    For the 1:1, you could use the Square library item. Its a bit further down in the left sidebar menu than the Rectangle. For the 4:3, you could an expression under the width parameter to height=width*3/4 and the expression under the height parameter to width=height*4/3.

    Archimatix 2017-10-11_08-40-16_PM.jpg

    The parameter that is the host of the expression should always be on the right side of the equals sign. IN other words, the expression under the width parameter is something that happens when width is changed - in this case, when width is changed the height should be reset.

    In a more complex interface, like a Grouper with a number of custom parameters, when the width changes, you may have more than one expression of parameters that should change based on the new value of width.
     
  9. trilobyteme

    trilobyteme

    Joined:
    Nov 18, 2016
    Posts:
    309
    Ah, perfect, thanks!
     
  10. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479

    Stop looking at me like that, Kyle... We'll start documenting the Deformer nodes tomorrow!

    Archimatix 2017-10-15_08-38-22_PM.jpg
     
    ftejada and elbows like this.
  11. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    ftejada, mbbmbbmm, elbows and 3 others like this.
  12. jcarrick

    jcarrick

    Joined:
    May 5, 2015
    Posts:
    15
    hi - relatively new to archimatix - attempting to build a sci-fi city and struggling with a new wrinkle...
    I had no trouble extruding my shapes to a wide variety of heights - however now, no matter what I do - I can't go above 50. I've re-installed the asset done a clean install on a new project. I tried changing the segment number - no effect. When using Unity 5.6.1 - the library editor presents several chrome buttons in place of some of the various shapes on the left and right. In Unity 5.5.1 at least the proper option buttons show up, however, still not extrusion height beyond the 50 mark. What was I doing right before - that now has gone so wrong?
    admitted noob here...
     
  13. puzzlekings

    puzzlekings

    Joined:
    Sep 6, 2012
    Posts:
    404
    @jcarrick can't think why this might happen, though Rory would know better.

    It reminded me that I tried something similar last year so I just posted this up on Youtube:
     
  14. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Im not 100% certain, but this may have to do with the precision level.

    Behind the scenes AX uses ClipperLib to handle shape booleans. ClipperLib uses an integer to store point information as integer math is much faster then floating point math. So in order to not just drop the decimal places float values are multiplied by a whole number which determines its floating point precision.

    If the original floating point number is to large, multiplication by the magic number (precision level) will result in inaccuracies as data is lost. Also, if the unit of measurement is to small, multiplication by the precision will also result in lost/inaccurate results.

    AX has several different precision levels which can be found on the inspector for the AXModel.
    Changing this precision level alters the Magic number AX uses when interacting with ClipperLib and very well may fix your issue.
     
  15. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @jcarrick - it looks you hit the default max that the Extruder height parameter was set to. You can adjust the max by opening the Height foldout:
    Archimatix 2017-10-17_12-20-33_PM.jpg

    I am not sure why the default was set to 50, I guess I wasn't dream of tall cities in the early days of AX! I will reset the default to a max of 1000 in the next version. The min max fields were added to parameters recently. If they are not in the latest asset store version of AX, PM me your email and asset store invoice ID so I can add you to the slack.com site for AX, where you can download the very latest version of Ax.

    The icons in the library sidebar blanking out is a bug that I believe has been fixed also in the latest version due to the asset store in a couple of days. ;)
     
  16. jcarrick

    jcarrick

    Joined:
    May 5, 2015
    Posts:
    15
    Thanks so much - I completely missed that this was an option - muchas gracias!
     
  17. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    I am using archimatix runtime for runtime parametric cave generation for a level I am working on. I have everything setup and it generates fine but I am having a bit of an issue getting data that I need for post generation.

    I am not exactly how to get what I need. I do a lot of post process generation on the cave AXModel. Basically Archimatix does the geometry for me but I fill in the level with randomly generated props. I have AM generate special geometry surfaces that the end user never sees but I use as generation locations for my props.

    When I use a prefab or a stamp this all work beautifully and I have no problems. But runtime is giving me issues. My biggest problem is that I need the geometry (mesh vert data) from the particular Polygon meshers I set up. When stamped or prefabed I can just grab the renderer (GetComponent<Renderer>()) of the node I setup. I don't seem to be able to do that in runtime, it doesn't look like there is a renderer on the component (perhaps your storing all the meshes in the AXModel itself (???). I can see the mesh of the polygon I am looking for but I can't seem to find its renderer (it doesn't help that AM won't let me look at the object in the editor).

    Any insight into what AXModel is actually doing at runtime would be helpful. Specifically where can I go to get the mesh data for a particular node? Thanks for any help you can give.
     
    Last edited: Oct 17, 2017
    pixelsteam likes this.
  18. Hitch42

    Hitch42

    Joined:
    May 12, 2015
    Posts:
    98
    Kind of an aside, but could you post any screenshots of your cave? I don't think I've seen Archimatix used for anything like that and I'm curious how it looks.
     
  19. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @Enoch - The AXModel has a GameObject hierarchy under it null object child "generatedGameObjects". When you Stamp and Ax model, all it does is move the generatedGameObjects out from under the AXModel object and strips all the AX specific behaviors. You can open the Ax model in the Hierarchy window and then open generatedGameObjects to see where all the objects are.

    During generation, say, as you are sliding a slider, GameObjects are not created, just meshes that are draw using Graphic.DrawMesh. Once you let go of a slider, or call model.autobuild, then the generatedGameObjects is populated by the GameObjects that Ax creates.

    Let me know if this helps, or if you need more info. ;)
     
    Last edited: Oct 18, 2017
    Enoch likes this.
  20. mbbmbbmm

    mbbmbbmm

    Joined:
    Dec 28, 2013
    Posts:
    59
    Just wanted to let you guys know that there's now an official FBX exporter on the asset store:
    FBX Exporter (beta)


    It requires Unity 2017.1 or higher. The only problem for me is that it only seems to export ASCII format, which is not so good with Blender. But apart from that it seems to work pretty well and has some nice additional features (synching with Maya etc.)

    I can recommend them! These videos really helped me to get into the flow.
     
    roryo likes this.
  21. trilobyteme

    trilobyteme

    Joined:
    Nov 18, 2016
    Posts:
    309
    I've been digging through the tutorials and videos, and can't seem to find an easy or elegant way to add windows to a wall. Ideally I would like to set up a parametric window (with or without windowsill) with the number of panes changing as the window gets bigger or smaller, and then be able to add that (either individually or parametrically) to a wall section. The only walls w/windows I've been able to find are more along the lines of skyscraper walls with floor-ceiling windows, I'm interested in windows for things like homes and residences or old factory and industrial structures. Does anyone have any tips, tricks, or links to tutorials that might be able to help?
     
  22. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,502
    The latter part of the following tutorial covers one solution.

    edited to add - It doesn't cover everything you are asking for, but hopefully it will give you some clues, although I'm now starting to think I've probably not picked on the biggest issues you are having getting this to work.

     
    roryo likes this.
  23. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Thanks of rthe heads up, @mbbmbbmm! So glad to see that unity is providing official FBX export. It is nice to know that the exports are there and should evolve as 3rd party applications like Maya evolved. Hopefully they will add binary output for Blender eventually.
     
    awesomedata likes this.
  24. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    While Ax is good at a lot of things, ironically, it is not so elegant at punching holes through walls and automatically sizing window frames to match.

    3D Lunatic shows an excellent method for cutting holes in walls in the video tutorial posted above. This room was made with the same method:
    PastedGraphic-32.jpg

    While this method requires a bit of rigging and a good number of nodes, once you have your basic model, you can make lots of variations:

    PastedGraphic-52.jpg

    Another method of making openings in walls is to treat each wall plane as a separate merged extrude in the turned up in the negative-Z or X axis.

    94470181-F730-444C-9AA3-B7187804E32C.jpg
    In the image above, the same RepeaterTool is fed into the GridRepeater2D to cut the holes and the GridRepeater3D for the sills and awnings. Then you can duplicate this an resize to place other walls manually:

    Archimatix 2016-04-18_08-55-23_AM.jpg

    Archimatix 2016-04-18_08-55-52_AM.jpg


    On of the biggest new features planned is called WindowWall, which will allow you to specify a plan and a fenestration scheme and it will automatically cut the hole, add and resize the window and door objects and make sure all the UVs add up. I estimate it to be about a three week development effort. I am not sure I can focus on it until January, though.
     
    Last edited: Oct 18, 2017
    ftejada, trilobyteme and tapawafo like this.
  25. trilobyteme

    trilobyteme

    Joined:
    Nov 18, 2016
    Posts:
    309
    Thanks for the response. WindowWall does sound like a pretty terrific solution, while of course I'd love to have to have the feature yesterday (hehe) I totally understand that doing it right takes time and making the time for the project might take a while. I can certainly make do until AX gets there.

    I've really been enjoying the 3D Lunatic videos, they've been very helpful.
     
  26. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    This worked perfectly when I properly did a model.autobuild. I was using the autogenerated controller and it only does a model.isAltered by default. Everything is great now. Thanks for the help.

    Sure, but I will warn you that I don't think it looks really cavey till the props and such are added in. And I should note that I don't use Archimatix to generate the props (cave rocks, candles, stalagmite, etc). But I do use Archimatix to generate geometry that I spawn these things on. This way I can randomly generate the cave and all of the hidden surfaces where these things should go at the same time with one function. cave.gif
     
  27. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    @roryo

    I was watching the below video and realized this part about UV repetition vs. physical length in space was very applicable to my situation with tiling:



    This aspect of the UV process in AX will get tedious on large structures.

    Is there a way to make the UV scaling regular across a set distance in space and simply offset that as opposed to what it's doing now (i.e. simply repeating as it stretches)? Perhaps a checkbox toggle to do one or the other?
     
  28. mbbmbbmm

    mbbmbbmm

    Joined:
    Dec 28, 2013
    Posts:
    59
    I think @roryo said in the slack that something similar would come some time in the future? It would be really helpful I think.
     
  29. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    Hi I need some support with expressions. I'm new to archimatix, just got the right situation to use it.

    One way binding
    If I have two rectangles name RectangleA and RectangleB

    If I want the width of Rectangle A to be half of that of Rectangle B,
    1. Drag RectangleA.width to connect it to RectangleB.width
    2. And then I see two lines RectangleA.width = RectangleB.width and RectangleB.width = RectangleA.width
    How do I impose only one way relation, not two way. If rectangle B change I want RectangleA to be updated but if RectangleB changes, I do not want RectangleA to be updated.

    Scopes of Node Properties
    What is the expression field for?
    I see that under, for example, RectangleA there is an expression field. But I can't seem to access other node's variables/properties (for example RectangleB.height) from RectangleA.height expression field.

    I understand checking expose will allow my own code to access this property, but how about accessing properties of one node through the expression field in other nodes like in this example? Am I right to say that expression field in one node can only use the local properties of that node?

    Using Variables
    Is it possible to declare variables. So in RectangleA.width I'll write width = var1 + 2 and in RectangleB.width I'll write var1 = width. I bet this doesn't work as the values need to observe each other. Can you guys explain whether variables can be used and how it can be used.

    These are not hypotheticals, I'm looking to heavily rely on expressions, appreciate any help. :)
     
  30. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Ok, so when you create a link between two properties, you can click on this link, and an expression editor will appear.
    This allows you to edit the expressions (there are two of them) for this link.

    RectangleA.Width=RectangleB.Width
    RectangleB.Width=RectangleA.Width

    When RectangleB is altered, the first expression in the above example (RectangleA.Width = RectangleB.Width) is fired.
    I have not tested this, but if you did not want RectangleA's width value to update you could alter the expression to be RectangleA.Width = RectangleA.Width


    The expression field under a parameter is for expression that are solely in the scope of the node they are on.
    For example on several of the shape nodes under their control parameters in the Geometry section you will see expression. These expressions are used to control other parameters on that specific node.

    So the scope of the expressions under a property is solely for that node and it can only access other parameters on that node.

    The two way links between nodes allow you to access properties on either of the two nodes, but no other nodes.

    No, you can not define variables in expression. You can however define them in turtle script in the shapes...



    And now its time for a shameless, but relevant plug for one of my node packages.

    Archimatix Pro Tools and Nodes adds a couple nodes to the mix you might find of interest, as well as some new turtle script commands.

    In particular it includes

    COMMAND NODE
    The Command Node is a super powered general purpose logic node that has the ability to perform a myriad of complicated logical operations within your graph.

    The Command Node allows you to add and remove parameters from it, much like a Shape or Grouper Node would, and it allows you to use TurtleScript within the context of this node. The Command Node also makes use of some Extended TurtleScript commands to bring some added features to the table.

    By combining all of this together you are able to perform just about any sort of logical operation you can dream up to alter your model.



    But wait, there's more. Those extended turtle script commands its talking about are

    nget - Allows you to get an Int, Bool, Float or string value from any parameter on any node in the graph and stores it to a local temporary variable, or a local parameter.
    nset - Allows you to set an Int, Bool, Float, or string value to any parameter on any node in the graph.


    These new turtle script commands are actually super secret. I have not mentioned them really at all, and have not even put them in the documentation (I should do that).

    By using the command node with the extended TurtleScript functions, pretty much any sort of equation you need, or complex relationship you want to define is possible.


    The package also includes several other cool things (like SVG Importing) but i mainly just covered what was relevant to your post.

    Hope that all helps.


    [Edit]
    For those of you who already have the Pro Tools & Nodes package the syntax for those cool commands are as follows.

    nget nodeName parameterName localStorageVariableName
    nset nodeName paramaterName value

    In the case of nget, if the value of localStorageVariableName is a local parameter the value will be set to the parameter, if no such parameter exists, it creates a temporary variable within the scope of the turtle script.
     
    coverpage likes this.
  31. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    Thanks you very much for the reply. Very clear. Just one more question. With your tool, would it be possible for me to expose the variables created in the turtlescript. The reason is that my main logic is in C# , AX objects are very complex objects but controlled by this C# script. So the C# script oversees everything.
     
  32. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    It depends where you store the value you retrieved in TurtleScript. If you store it in a local node parameter, then yes it can be exposed as you simply need to expose the parameter you are saving it to. You can create as many parameters on the node as you need to store values.

    If instead you create them in a temporary variable, no as temporary variables only exist for the scope of the processing of the TurtleScript. To put it in coding terms a node parameters are like globals to TurtleScript, and temporary variables created in TurtleScript are like variables inside a function.

    So if you wanted a complex function that took several input values from nodes, and then spit out several values, you would make parameters on the node for both the inputs and ouputs, and then have turtle script do the processing and save the values out to the correct parameters. Make sense?

    CommandNodeParams.gif
     
    coverpage likes this.
  33. coverpage

    coverpage

    Joined:
    Mar 3, 2016
    Posts:
    385
    I understand, it looks like a yes :)

    I've purchased your assets, for nothing else I think I want to push the limit of AX and this would be useful. Thanks for the support.
     
    RuinsOfFeyrin likes this.
  34. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Thanks for purchasing the package. If you ever have any questions, issues, or feature requests for the package don't hesitate to shoot me a message. I check the forums at least once a day, and can also be found on the AX slack channel which purchasers of AX cant get an invite to by contacting @Rory.
     
    coverpage likes this.
  35. brisingre

    brisingre

    Joined:
    Nov 8, 2009
    Posts:
    277
    Wow. This really makes it much easier to use. $10 well spent, I'll have to check out the rest of your packages.

    I do have a few other questions. Right now I'm trying to use Archimatix to generate simple planets. Basically, very high poly spheres with some noise distortion.

    Is there any way to do something sort of like an inflate distortion but sort of like noise? I'm looking to shift each vertex along it's normal based on a 3d noise, like a terrain. I can do it in a shader but I'd rather do it on the model so I can do collision.

    upload_2017-10-20_22-22-48.png

    That's what it looks like done from a shader.

    Is there a way to split up high poly models into smaller models to get around the Unity vertex limit? I run into it pretty easily if I try to create very high LODs, which is something I'd like to be able to do.

    Is there a reason changing the LOD of a sphere significantly changes its UV coordinates? 40 segs looks like this:
    upload_2017-10-20_22-29-12.png
    If I bring it up to 140 segs, the U coordinate drifts like 10%:
    upload_2017-10-20_22-29-38.png

    Is there any way to stop Archimatix updating live when I change values in the editor? On complicated models this can take a really long time and stop me doing other stuff, if rebuilding's going to take, I dunno, 30 seconds I'd like to change more than one setting between rebuilds.

    Last, I have a non-critical bug report. Archimatix' editor scripts call mat.mainTexture a ton. mat.mainTexture throws an exception if a material doesn't have a texture called _MainTex or whatever it's supposed to be. Currently that exception's unhandled and just pops up in the console, and if you use a material like that in Archimatix, it throws an exception every frame. Mostly just annoying, but it does lag the editor a bit too.
     
  36. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Hi @brisingre - Have you tried feeding the sphere into a NoiseDeformer?

    To get good results, perhaps keep the Frequency low and adjust the other parameters.

    PlanetNoise.gif

    The caveat is that the noise is not normal to the center of the sphere, but radially around vertices. I could add an option to keep the noise normal.

    I can't think of why the UV would drift with detail change, but I'll look into it.

    What we really also need is a sphere primitive that has polys on top instead of converge to a point.

    The _mainTexture bug has been fixed in v. 1.0.11b4. If you would like to get early access to this, PM me your asset store invoice ID and an email I can send the slack.com invite.
     
  37. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419

    Thanks -- but now that I think about it, he said that not long after AX was first released.


    If I remember correctly, @mensch-mueller had issues with this at one point a long while back too. Am I mis-remembering, mensch?

    Either way, the "take it to a modeling program to fix it" is a huge workflow issue for a lot of people, especially people who want to use AX models as-is without having to export (i.e. runtime?). I had assumed it to be fixed by now since it's kind of a vital behavior.

    Even if we can manually set it with an expression or something, that's better than just ignoring the issue.

    What think you, @roryo? -- I hope you aren't ignoring my post if this just somehow happens to be a deeper AX issue.
     
    Last edited: Oct 21, 2017
  38. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    I revisited this idea yesterday after seeing these posts. Right now the V is locked to the Y, but the U has to be told whether to adhere to the absolute X-axis or Z-axis. I could rig this up for paths that are more or less orthogonal, but this would not work with curves. So we could get something going for plans that are mostly orthogonal as something to get us through the wait for WinWall.
     
  39. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419

    Would it be possible to use a base-unit (i.e. 1x1x1 meter) or a user-defined normal to do deformation or projection math so that it can stay, more or less, projected properly on a horizontal plane, even with curves? I mean even if we were to manually define the normal direction for a given wall part, that would be better than it not working at all -- I think projection could be the only option for curves, and for my purposes, I /need/ this to work with curves.

    Any thoughts?


    [EDIT:]

    Just to clarify what I was thinking -- your current method would work still, assuming all a curved wall is is something that has a z offset in a given normal direction (i.e. the x or z axis), but let the user rotate that normal to his or her needs if they want. This should be simple to offset if you allow the user to give both a normal direction AND a shape input (i.e. a curve) to grab that z offset from.

    Since this is JUST for texturing, would there be any real issue with this?
     
    Last edited: Oct 21, 2017
  40. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    Once a shape has been cut, say for windows, it is now a list of multiple shapes, where each does not have any information that it used to be part of a larger curve.

    But it could be possible to feed the original curve in to the mesher as a UV coordinate curve. That way, the mesher could check a start point for a sub curve, find where it would be on the original curve, calculate the U at that point on the original curve and go from there.
     
    mbbmbbmm and awesomedata like this.
  41. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Hey @brisingre ,
    Glad you like the Pro Tools and Nodes and are finding it makes your experience with AX even more enjoyable. I like to release packages at a nice discount as a nod to early adopters, I also tend to throw something special in a package after the initial sale as well as a little bonus to those who picked it up right after release, so look forward to that coming soon as well ;)
     
    brisingre likes this.
  42. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Thanks @roryo -- that sounds more like what I'd be looking for.

    The important thing is that all works without having to take it out to a modeling program (and thus preserves runtime!) -- which are both the main draw of AX to me -- aside from parametrics.

    Speaking of parametrics -- are you planning to implement x/y parameters to Free Curves anytime soon like we discussed? -- Been waiting a while for those too, and I can't progress any farther on my project without them (or the UV fix there too!)
     
  43. brisingre

    brisingre

    Joined:
    Nov 8, 2009
    Posts:
    277
    I tried to get the noise deformer to do what I need -- it's close but not quite right. I think the issue is just with the displacement not being normal to the center of the sphere -- that option would probably let me do what I'm trying to do.

    I'm not using the existing sphere primitive, because it always opens up a hole on either the top or the bottom when I feed it into a noise deformer. I replaced the half-circle shape in the sphere plan with a circle shape to get it to stop doing that, that could have something to do with the drifting. A sphere that didn't waste so many polygons at the poles would be sweet.

    It seems like it's currently using the noise to calculate a unique displacement direction for each vertex, which is fine for relatively small displacement values, but slightly larger ones cause it to clip through itself. upload_2017-10-21_10-19-13.png
    upload_2017-10-21_10-22-45.png

    I'd like to use 3d noise to calculate a displacement distance, and then displace each vertex that distance along it's normal.

    The Y Axis Only option seems like it would be equivalent to what I need on a upward-facing plane. I tried to test that out, just to see, but I immediately ran into some problems. The first is that I don't actually know the right way to make a high poly plane. I managed something with a gridrepeater but I don't think that can possibly have been the right way to do it, and it's definitely just a bunch of little planes and not actually a high-poly plane. It's not super surprising, then, that the distortion opens up holes in it, but it is a little surprising. I would have expected that four vertices at the same point in space would receive the same displacement, but that isn't what's happening.
    upload_2017-10-21_10-57-27.png

    I managed to make something closer to a real high poly plane by extruding a curve. This worked pretty well -- all it's missing is a straight line with a configurable number of segs. That seems like something I can probably do without turtlescript, but I can't figure out how. It's probably very easy with turtlescript, which I should learn anyway, but it'd still be best not to reinvent something built-in.

    upload_2017-10-21_11-18-42.png

    As far as the UVs go, I think I just don't know how to set those up properly. The drift is minor when I change number of segs, but it's colossal if I change the size of the sphere -- so probably I'm supposed to be setting up some relationships between the size of the sphere and the UV scale. I don't know how to do that other than straight trial and error though -- is there any documentation on this apart from the MaterialTool page? The MaterialTool page talks about AXTexCoords which sounds promising, but I don't know where to go to find out more about them.

    I'd definitely like to be on the Slack, I'll PM you in just a second.
     
  44. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    Do you want to displace based on the normal of the vertex, normal of the face, or direction from center of the meshes bounds? Each one has slightly different outcomes depending on the topology of the mesh.
     
  45. brisingre

    brisingre

    Joined:
    Nov 8, 2009
    Posts:
    277
    For what I'm actually doing, with a sphere, it's exactly the same. I think displacing based on the normal will be useful in a lot more circumstances than displacing away from a point, but I can think of uses for both.
     
  46. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    @brisingre

    Ok, so such a node had been completed and added to my "Mesh & Material Nodes Package", I now have a few other Deformers I will have finished up in a bit here as well that are going in that package, and an update will be submitted tonight.

    It is important to remember with this deformer that if the vertexs are not welded (and thus probably have different normals) it will leave holes in the mesh. For something like your sphere though this works perfectly.

    For anyone who owns a copy of the package who would like early access to the deformers please shoot me a PM with your invoice number and ill send you over a copy of the updated package with the new nodes.

    NoiseDeformer.gif
     
    brisingre likes this.
  47. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    I just added a FromCenter check box to the NoiseDeformer with some good results. I hope this helps. I will upload the build to the slack in a couple hours. @brisingre, thanks for the info - I just sent you the slack invite ;)



    PlanetNoiseCentered.gif
     
    brisingre likes this.
  48. roryo

    roryo

    Joined:
    May 21, 2009
    Posts:
    1,479
    To make anything hi-poly, you can increase the subdivision parameter on any Shape input:
    Archimatix 2017-10-21_04-09-12_PM.jpg
     
    brisingre likes this.
  49. brisingre

    brisingre

    Joined:
    Nov 8, 2009
    Posts:
    277
    Ya'll are fast!

    I'll have to pick up the rest of your nodes. There isn't a bundle or anything like that, right? Just the three node packs + essentials?

    That looks great! Thanks for adding me to the slack.
     
  50. RuinsOfFeyrin

    RuinsOfFeyrin

    Joined:
    Feb 22, 2014
    Posts:
    785
    That is correct.
     
    brisingre likes this.