Since the geometry has no normals, the viewport and Mantra have to automatically compute normals. In order to handle geometry that has clear cusps, e.g. the edges of a cube, it defaults to computing vertex normals with a cusp angle of 60 degrees, so if two adjacent polygons have geometric normals that differ by more than 60 degrees, there will be a cusped edge between them.
If you want to explicitly compute N on the geometry, you can use a Normal SOP with “Add Normals to” set to “Points”. Alternatively, in the viewport display options, under Geometry > Normals > Auto Generate, you can select Point Normals. For Mantra, on the object, you can add a rendering parameter “Add Normals To Geometry” (vm_addnormalsto) and select “Point Normals”. If you want vertex normals, but just a larger cusp angle, there are ways to specify that too. I think there's some way to do this all with detail attributes too, but I can't remember what they're called right now.
Another thing that would probably also make this less of an issue would be if you had higher resolution cloth geometry, since then the angles between adjacent polygons would be less, but that might slow things down, so I understand why that wouldn't be an ideal solution.
Hopefully something above is what you were looking for.
Found 830 posts.
Search results Show results as topic list.
Technical Discussion » Why does the cloth simulation doesn't work properly?
- neil_math_comp
- 1743 posts
- Offline
Houdini Indie and Apprentice » communication for the administrators not to publish
- neil_math_comp
- 1743 posts
- Offline
Your other post has now been approved. I apologize for the wait.
When a user submits their first post to the forum, the post must be approved by a forum moderator before any of the posts will be published. The purpose of this process is to prevent spammers, scammers, and various other bots from posting on the forum. The disadvantage is that, since we don't have dedicated people moderating the forum 24 hours per day, 7 days per week, it may take some time to approve these first posts.
I'm really a software developer; I try to help people on the forum because I want to help people, but I have to be a software developer first. Although I sometimes approve posts on the weekend, I need to take some time away from work to relax on weekends. I hope that you can understand.
When a user submits their first post to the forum, the post must be approved by a forum moderator before any of the posts will be published. The purpose of this process is to prevent spammers, scammers, and various other bots from posting on the forum. The disadvantage is that, since we don't have dedicated people moderating the forum 24 hours per day, 7 days per week, it may take some time to approve these first posts.
I'm really a software developer; I try to help people on the forum because I want to help people, but I have to be a software developer first. Although I sometimes approve posts on the weekend, I need to take some time away from work to relax on weekends. I hope that you can understand.
Technical Discussion » Error running callback while using simple_baker
- neil_math_comp
- 1743 posts
- Offline
Could you post a HIP file? (…assuming it's a file you made yourself, and not a private tutorial file.)
Other people would probably have a better idea than me, and having the file would help get an idea what's going on, but I'm going to take a completely wild guess that there's either no light or no camera in the scene and that it's the render node that's failing with an error message that Python isn't picking up.
Other people would probably have a better idea than me, and having the file would help get an idea what's going on, but I'm going to take a completely wild guess that there's either no light or no camera in the scene and that it's the render node that's failing with an error message that Python isn't picking up.
Technical Discussion » Particle count and quality
- neil_math_comp
- 1743 posts
- Offline
You pretty much described it exactly. Fewer particles will give less detail and a less accurate simulation. More particles will give more detail and a more accurate simulation. Beyond some point, adding more particles won't make a noticeable difference in quality, and at that point, you can stop adding particles.
If the particles are being surfaced decently before rendering, as long as the fluid sim results are what you want, you probably don't need to re-sim for final rendering. (That said, I'm definitely not an expert on fluid sims; I'm just going based on second-hand information, so I could be wrong.)
If the particles are being surfaced decently before rendering, as long as the fluid sim results are what you want, you probably don't need to re-sim for final rendering. (That said, I'm definitely not an expert on fluid sims; I'm just going based on second-hand information, so I could be wrong.)
Houdini Indie and Apprentice » HSript Expressions Master List
- neil_math_comp
- 1743 posts
- Offline
There is no such list, because most of them (like
That said, a list of global HScript expression variables can be found here: http://www.sidefx.com/docs/houdini/network/expressions.html#globals [www.sidefx.com] Global variables are less problematic than local variables.
$PR
) are “local variables”, in that they only apply to specific paramaters on specific nodes, and many have parameter-specific meaning, so they're described on the help pages for those nodes. We're also trying to slowly phase them out from critical places over time, because they effectively make decent performance impossible.That said, a list of global HScript expression variables can be found here: http://www.sidefx.com/docs/houdini/network/expressions.html#globals [www.sidefx.com] Global variables are less problematic than local variables.
Houdini Indie and Apprentice » Viewport Bug (I think) / problems with solver
- neil_math_comp
- 1743 posts
- Offline
No problem. If you can find a reliable way of reproducing it at some point, please feel free to submit a bug report at https://www.sidefx.com/bugs/submit/ [www.sidefx.com] It tends to happen in cases after a whole bunch of diving in and out, which has made it difficult to debug and fix. Sometimes, the stuck geometry will even stick around after File New or File Open.
The easiest workaround that usually works is to just switch to Render View and then back to Scene View. You don't usually have to open a new tab.
The easiest workaround that usually works is to just switch to Render View and then back to Scene View. You don't usually have to open a new tab.
Houdini Indie and Apprentice » Viewport Bug (I think) / problems with solver
- neil_math_comp
- 1743 posts
- Offline
Can you provide specific steps on how to reliably reproduce the bug? For example, here's a set of steps I just tried that don't reproduce the bug:
0) Open Houdini 16.5.393.
1) File > Open… > select and open the file. (The scene is initially at /obj/grid1)
2) Double-click on the solver1 node in the network editor to dive in.
3) Double-click on the attribvop1 node
4) Click on “obj” in the path navigation widget above the network editor. (I'm not sure what people usually call it.)
5) I expected to see something weird, but things looked as expected.
0) Open Houdini 16.5.393.
1) File > Open… > select and open the file. (The scene is initially at /obj/grid1)
2) Double-click on the solver1 node in the network editor to dive in.
3) Double-click on the attribvop1 node
4) Click on “obj” in the path navigation widget above the network editor. (I'm not sure what people usually call it.)
5) I expected to see something weird, but things looked as expected.
Technical Discussion » How do I check if a value is initialised in VEX?
- neil_math_comp
- 1743 posts
- Offline
The usual approaches to this (other than initializing x to infinity, for cases where that's safe) are:
1) Make a separate variable keeping track of whether it's been initialized.
This has the advantage that if
2) If you know that
Hopefully one of these 2 (or 3 if you count assigning infinity to x) approaches will work for you.
If you only care about the value, the infinity approach might be okay, but if you need the index corresponding with the value, that might be problematic if
1) Make a separate variable keeping track of whether it's been initialized.
float x; int is_x_initialized = 0; for (int i = 0; i < length; i++){ float y; // some logic that assigns a value to y if (!is_x_initialized){ x = y is_x_initialized = 1; } else if ( y < x){ x = y } }
This has the advantage that if
length
might be zero, or if something else causes x
to be uninitialized by the end of the loop, you can check is_x_initialized
after the loop to see if you need special code to handle that case.2) If you know that
x
is guaranteed to be initialized, and it's not too complicated to figure out what the initial value will be, just initialize it first.float x = // some logic that would have assigned the first value of y for (int i = 1; i < length; i++){ // Note that this starts from 1 now. float y; // some logic that assigns a value to y if (y < x){ x = y } }
Hopefully one of these 2 (or 3 if you count assigning infinity to x) approaches will work for you.
If you only care about the value, the infinity approach might be okay, but if you need the index corresponding with the value, that might be problematic if
y
can be infinity. That said, we make it a bit awkward to generate infinity in VEX, since it often leads to NaNs later on, but the value 1e1000
will always round up to infinity, if you want to use that approach.
Houdini Lounge » Selling Houdini models on Trubosquid
- neil_math_comp
- 1743 posts
- Offline
I'm not a lawyer and I am not super knowledgeable about the licensing terms for Houdini, but I know that if you post an Indie (“Limited Commercial”) or even Apprentice (Non-Commercial) asset to Orbolt, it can be downloaded as a full Commercial asset after approval. I don't know what the license agreement says or doesn't say about re-selling those elsewhere, so don't quote me on it, but I wouldn't be surprised if it's fine.
Technical Discussion » PolyExtrude, ptNum, and Sort
- neil_math_comp
- 1743 posts
- Offline
Glad to hear that it helped!
You can use attributes like pscale to control the transform when sweeping, in case you'd prefer to work with attributes, instead of directly using the one ramp, though you'd have to turn “Transform Using Attributes” back on. The full list of attributes that can be used for building transforms is at http://www.sidefx.com/docs/houdini/copy/instanceattrs.html [www.sidefx.com]
You can use attributes like pscale to control the transform when sweeping, in case you'd prefer to work with attributes, instead of directly using the one ramp, though you'd have to turn “Transform Using Attributes” back on. The full list of attributes that can be used for building transforms is at http://www.sidefx.com/docs/houdini/copy/instanceattrs.html [www.sidefx.com]
Technical Discussion » PolyExtrude, ptNum, and Sort
- neil_math_comp
- 1743 posts
- Offline
Hmmm… the only easy idea I have is to try using Sweep with a curve as the cross-section (in place of the grid) and using the spine curve you already have as the backbone curve. It's not an exact match to the behaviour of PolyExtrude, but it might give you a way to do what you need.
Technical Discussion » position link question
- neil_math_comp
- 1743 posts
- Offline
I don't know the exact use case you're talking about, (a HIP file would help clarify), but if you use a Ray SOP with Method set to Minimum Distance and Prim Num Attribute and Prim UVW Attribute enabled, you can project something onto the rest geometry once, then use the Attribute Interpolate SOP (with the attribute names set appropriately) to move the points to the corresponding positions on animated geometry on every frame (or subframe). Hopefully that's something similar to what you're looking for.
Technical Discussion » Bounding box not aligned to the world axis?
- neil_math_comp
- 1743 posts
- Offline
Any chance you could post a HIP file showing the issue? It's very difficult to guess what the issue might be without a file.
If you create a bounding box of a mesh inside an object, at the SOP (geometry) level, it will be axis-aligned in the space of that object, not world space, since all operations on the geometry are in the object's space. Most simulations support object transforms, though, so that should be fine. If your object's transform is identity, world space and the object space are the same, so if you really need the bounding box to be in world space, you can use the Object Merge SOP to transform the mesh into world space, then compute the bounding box. There's probably some way to do it within a single object, using the option to invert the transform, but I haven't thought that through yet.
If you create a bounding box of a mesh inside an object, at the SOP (geometry) level, it will be axis-aligned in the space of that object, not world space, since all operations on the geometry are in the object's space. Most simulations support object transforms, though, so that should be fine. If your object's transform is identity, world space and the object space are the same, so if you really need the bounding box to be in world space, you can use the Object Merge SOP to transform the mesh into world space, then compute the bounding box. There's probably some way to do it within a single object, using the option to invert the transform, but I haven't thought that through yet.
Houdini Indie and Apprentice » Mantra output & resolution when using "Render Current Frame" vs. "Render Frame Range"
- neil_math_comp
- 1743 posts
- Offline
If you want to change the gamma for saving images, in the Save As dialog for single frames, there's a “Convert to Image Format's Colorspace” toggle that you can turn off. My guess is that the video exporter must not be applying gamma or something like that, so the equivalent is to set the “Output Gamma” option to 1, (the default is 2.2).
Houdini Indie and Apprentice » Mantra output & resolution when using "Render Current Frame" vs. "Render Frame Range"
- neil_math_comp
- 1743 posts
- Offline
The joys of different image/video formats using different colour spaces. There may be a gamma issue too in this case, since it's a pretty big difference, so you might have to override the gamma in the export options for one or more of them. Which one looks closest to how it looks in Render View?
Houdini Lounge » Feature Request: 'feature complete' 3ds max Houdini engine plugin like MAYA.
- neil_math_comp
- 1743 posts
- Offline
davemcdI have no idea, but the video you linked to says (around 6:20)
Anyone know if there will be a beta soon?
"There's a 3D Studio Max [plugin] coming later in the year."
Technical Discussion » Houdini 16.5 and Layer geometry node
- neil_math_comp
- 1743 posts
- Offline
Paul GeraskinWhat seems to be causing you frustration about it? We might be able to help.
Errrrrr!! Bad new system. We need a tutorial how to use new uvs!
Houdini Indie and Apprentice » How do you scatter objects based on color MAP
- neil_math_comp
- 1743 posts
- Offline
If you have the colour as a Cd attribute, you can, in an Attribute Wrangle, do something like:
Then, you can enable the Density Attribute option on the Scatter SOP. If you have a texture map as a regular image file, (sorry, no direct UDIM support in the Scatter SOP), you'll want where you want points to be scattered to be white, and where you don't want points to be scattered to be black, so you may need to invert the image. You can then set Generate to “In Texture Space”, and crank up the Density Scale. (It will probably need to be in the 10,000's to 100,000's range, since it's the average number of points scattered into the unit square of texture space.)
Hopefully one of those works for you!
// Make dark areas 1.0, and everywhere else 0.0 @density = (length2(v@Cd) < 1e-4) ? 1.0 : 0.0;
Then, you can enable the Density Attribute option on the Scatter SOP. If you have a texture map as a regular image file, (sorry, no direct UDIM support in the Scatter SOP), you'll want where you want points to be scattered to be white, and where you don't want points to be scattered to be black, so you may need to invert the image. You can then set Generate to “In Texture Space”, and crank up the Density Scale. (It will probably need to be in the 10,000's to 100,000's range, since it's the average number of points scattered into the unit square of texture space.)
Hopefully one of those works for you!
Houdini Indie and Apprentice » Too far zoomed out
- neil_math_comp
- 1743 posts
- Offline
You can reset the view dolly to show everything using Space+A or Space+H (or Alt+A / Alt+H, or just A or H if you're in view mode). A just resets the dolly of the view (how far back the camera is), whereas H resets the dolly and the angle of the view. You can also hold Shift while using the scroll wheel to dolly slower; (if you're not in view mode, you'll also need to hold either Space or Alt while scrolling). Hopefully one of those helps.
I actually don't know what the hotkeys are for doing true zooming, (i.e. reducing the field of view angle of the camera), because that's something that I don't want to risk changing by accident; I tend to change the Aperture parameter manually on a camera in the cases when I want to adjust true zoom.
I actually don't know what the hotkeys are for doing true zooming, (i.e. reducing the field of view angle of the camera), because that's something that I don't want to risk changing by accident; I tend to change the Aperture parameter manually on a camera in the cases when I want to adjust true zoom.
Edited by neil_math_comp - April 3, 2018 09:34:37
Houdini Indie and Apprentice » Houdini Color Node
- neil_math_comp
- 1743 posts
- Offline
Most likely you're setting point colours, in which case, that affects all primitives sharing the points. You can use vertex colours or primitive colours if you want the colour to respect primitive boundaries. On the Color SOP, it's controlled by the Class parameter. Hopefully that's what you were looking for.
-
- Quick Links