Found 569 posts.
Search results Show results as topic list.
Houdini Engine for Maya » takes very long time to render particles import from engine in maya
-
- awong
- 818 posts
- Offline
In Maya's preferences, do you have “run up” enabled? If I enabled that option, then I see the behavior that you're describing.
Houdini Engine for Maya » takes very long time to render particles import from engine in maya
-
- awong
- 818 posts
- Offline
I can't seem to reproduce the issue that you described. When I rendered frame 25 with motion blur, I see the frame jumps to 24.75 and 25.25 only. I don't see it starting from the first frame. I think the “Calculating…” text is from Arnold, rather than from Houdini Engine. I've attached the scene file that I used to test.
Are you rendering in GUI? Or batch mode?
Does your asset contain the particle simulation? Or does it only contain the File SOP?
It'd be great if you can post a scene file that can reproduce this issue.
Are you rendering in GUI? Or batch mode?
Does your asset contain the particle simulation? Or does it only contain the File SOP?
It'd be great if you can post a scene file that can reproduce this issue.
Edited by awong - 2016年12月16日 03:46:31
Houdini Engine for Maya » Ramp parameter support!
-
- awong
- 818 posts
- Offline
The ramp UI is created using Maya's
Maya's documentation has more info on this:
http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__files_GUID_3F96AF53_A47E_4351_A86A_396E7BFD6665_htm [help.autodesk.com]
http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__cpp_ref_class_m_qt_util_html [help.autodesk.com]
AEmakeLargeRamp
, which uses standard Maya widgets. So it's possible to embed it inside a custom Qt interface. Maya provides the MQtUtil
class to find the Qt pointer and the Maya name of a Qt widget. Once you have the Maya name, you can use setParent
, and run MEL commands to create widgets as usual. See the example:from maya import cmds from maya import OpenMayaUI from PySide import QtGui import shiboken w = QtGui.QWidget() w.setObjectName("ramp_ui") l = QtGui.QVBoxLayout(w) l.setObjectName("ramp_layout") w.show() w_ptr = OpenMayaUI.MQtUtil.findWindow("ramp_ui") w_name = OpenMayaUI.MQtUtil.fullName(long(w_ptr)) cmds.setParent(w_name) mel.eval('source AEaddRampControl; AEmakeLargeRamp("|test_ramp1.houdiniAssetParm_ramp__ramp", 0, 0, 0, 0, 0);')
Maya's documentation has more info on this:
http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__files_GUID_3F96AF53_A47E_4351_A86A_396E7BFD6665_htm [help.autodesk.com]
http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__cpp_ref_class_m_qt_util_html [help.autodesk.com]
Houdini Engine for Maya » Triggering a python script from a houdini engine interface button.
-
- awong
- 818 posts
- Offline
Ah, I see what the issue is.
The callback script is called when the Maya node cooks the Houdini asset.
After the callback script is executed, the value is indeed changed on the Maya side, but it's changed on the Maya side only.
After the Houdini asset is cooked, the Maya node will actually get the asset parameters from the Houdini asset, and set it onto the Maya node. This means any values that were originally on the Maya node is overwritten by the values from Houdini after the cook. This is the correct behavior, but this is also why you are losing the setAttr changes.
Instead of using setAttr, try setting the parameter on the Houdini asset node directly. For example:
However, a catch is that the Maya AE doesn't update immediately, even though the value on the Maya side changes. You could click the “Load Attributes” at the bottom of the AE to force a UI refresh though.
You could also get the asset parameters from the asset node directly this way, instead of using getAttr.
Take a look at the attached asset. The button on the asset simply sets the asset parameter to the frame number.
The callback script is called when the Maya node cooks the Houdini asset.
After the callback script is executed, the value is indeed changed on the Maya side, but it's changed on the Maya side only.
After the Houdini asset is cooked, the Maya node will actually get the asset parameters from the Houdini asset, and set it onto the Maya node. This means any values that were originally on the Maya node is overwritten by the values from Houdini after the cook. This is the correct behavior, but this is also why you are losing the setAttr changes.
Instead of using setAttr, try setting the parameter on the Houdini asset node directly. For example:
node.parm(“test_float”).set(1.0)
However, a catch is that the Maya AE doesn't update immediately, even though the value on the Maya side changes. You could click the “Load Attributes” at the bottom of the AE to force a UI refresh though.
You could also get the asset parameters from the asset node directly this way, instead of using getAttr.
Take a look at the attached asset. The button on the asset simply sets the asset parameter to the frame number.
Houdini Engine for Maya » Support for Maya sets
-
- awong
- 818 posts
- Offline
kahuna031
Also: seems that reassigning the input geo to one with different shaderGroups attachments doesn't correctly updates the outputs assignments. “Sync Asset” doesn't fix this but “Reload Asset” does.
Yes, I think I'm able to reproduce the issue. You might be able to workaround it by clearing the input first (i.e. disconnecting the input), trigger a cook, and then connect the new input.
Houdini Engine for Maya » Copy Arnold StandIn
-
- awong
- 818 posts
- Offline
After clicking sync, did the particle node get created? What about changing the frames? If you're not at the start frame, Maya has an issue where particles tend to not update properly until the frame changes.
Houdini Engine for Maya » Copy Arnold StandIn
-
- awong
- 818 posts
- Offline
You might just need to do a “sync”. After toggling the “Copy Test Geo” option, you need to do a “sync”, because that option changes the type of what the asset is outputting. For example, when the option is “on”, a mesh node needs to be created in Maya to receive the asset's outputs. When the option is “off”, a particle node needs to be created. Doing a “sync” will sync up the Maya nodes to match what the asset needs.
Houdini Engine for Maya » Triggering a python script from a houdini engine interface button.
-
- awong
- 818 posts
- Offline
Can you explain what you mean by getAttr and setAttr not respecting the contents and manipulation? It might help if you can provide a simple example of what you're trying to do.
Houdini Engine for Maya » Triggering a python script from a houdini engine interface button.
-
- awong
- 818 posts
- Offline
Printing messages in the reverse order is actually a bug on the Maya side. The issue is that Maya catches Python's print statements, so that they can be printed in the script editor. When the print statements happen on the main thread, the prints happen in the correct order. However, if the print is from a separate thread, the prints is printed in the reversed order. The following script can be used to reproduce this issue on the Maya side:
I have already submitted a bug to Autodesk. I'm not sure if it'll get fixed though.
Instead of calling separate prints, you could try appending the messages to a string variable, and print that variable once in the end of the execution. This would at least ensure your messages in that one string variable would be in the correct order.
def foo(): for i in range(10): print i # call from main thread foo() # call from separate thread import threading mythread = threading.Thread(target=foo) mythread.start()
I have already submitted a bug to Autodesk. I'm not sure if it'll get fixed though.
Instead of calling separate prints, you could try appending the messages to a string variable, and print that variable once in the end of the execution. This would at least ensure your messages in that one string variable would be in the correct order.

Houdini Engine for Maya » Copy Arnold StandIn
-
- awong
- 818 posts
- Offline
Arnold StandIn cannot be used as inputs. I'm not too familiar with MtoA. Does it support rendering instancing efficiently (without using Arnold StandIn)? If so, the simplest way would be to make use of packed primitives. For example, you'd pack the 20 polygons object as a packed primitive, and then copy it to the 5 million points. When these 5 million packed primitives are outputted into Maya, it'd be outputted as Maya particle instancer.
If MtoA doesn't support rendering Maya instancer, then maybe another way is for the asset to only output the 5 million points, without copying the 20 polygons. The points would be outputted into Maya as particles. In Maya, you can then use Maya's particle instancer to instance the Arnold StandIn onto these 5 million points.
Hope this helps!
If MtoA doesn't support rendering Maya instancer, then maybe another way is for the asset to only output the 5 million points, without copying the 20 polygons. The points would be outputted into Maya as particles. In Maya, you can then use Maya's particle instancer to instance the Arnold StandIn onto these 5 million points.
Hope this helps!
Houdini Engine for Maya » Support for Maya sets
-
- awong
- 818 posts
- Offline
kahuna031The prim attribute only applies to Maya material assignment. i.e. maya_shading_group
AWong. I'm a bit unclear about the design on this. You say you switched to a prim attribute rather than groups but in your example your only using groups?
Other Maya sets are still converted into Houdini groups.
kahuna031
I'm adding a prim attribute called ‘maya_shading_group’ on my input on the houdini side but not getting the same behaviour when in maya. For instance, an attribDelete gives this warning in the cook messages.
“Warning: Invalid attribute specification: ”no match for maya_*“.”
Though, right after this node I can use a partition node with the expression `@maya_shading_group` and it gives me a set with the original shading group (or is this in fact the set from the prim group?)
Also getting alot of these
// Error: line 1: Cannot add the following items to the set since they would break the exclusivity constraint: wal_cutter1_0.f //
Even though I delete all groups before adding a single one.
Would be good with a file showing how we should use the prim attrib.
I've attached an example asset that shows deleting the Maya material (i.e. shading group), and then assigning some faces to a material again.
Hope this helps!
Houdini Engine for Maya » Which attribute types are supported?
-
- awong
- 818 posts
- Offline
DASDFor meshes, besides the ones you mentioned, uv attributes are also recognized.
1. Which attribute types are supported in Houdini Engine for Maya, so that Maya recognizes the attributes?
DASDYes, assets can output geometries with custom (detail, primitive, point, and vertex) attributes. You shouldn't have to do anything special for outputting them into Maya. Any attributes that are not recognized will be outputted to the Maya shape node (i.e. mesh and nParticle node) as Maya attributes, under the “Extra Attributes” folder. Float, int, and string type attributes are all supported.
2. Can I create custom attributes on my geo that Maya would recognize? (How would I achieve that?)
DASDYes, primitive and point groups are supported. If the asset outputs geometries that contain Houdini groups, the groups should be created as Maya sets. This should also happen automatically.
3. Can I somehow preserve groups without separating the geometry? This would be equivalent to Maya selection sets. Could I create those from within Houdini Engine?
And to avoid separating the geometry, you'd have to ensure the “Split Geos By Group” option is off. Since the plugin started supporting Maya sets, this option should be off by default in recent versions. So make sure you're using a recent build of the plugin.
Houdini Engine for Maya » Unsupported data type in attribute: varmap
-
- awong
- 818 posts
- Offline
The voronoi fracture SOP does create the varmap attribute. The Maya plugin attempts to output any existing attribute on the output/resulting geometry into Maya. Since the “varmap” data type is not supported inside Maya, the warning is printed out. If the attribute is deleted, the attribute should be gone, and should not be outputted into Maya. So the warning should go away. However, it seems like the warning is still showing for you.
I've created a simple voronoi fracture asset, which would delete the varmap attribute. Could you try loading it into Maya, and see if the “varmap” warning message appears?
I've created a simple voronoi fracture asset, which would delete the varmap attribute. Could you try loading it into Maya, and see if the “varmap” warning message appears?
Houdini Engine for Maya » Unsupported data type in attribute: varmap
-
- awong
- 818 posts
- Offline
What kind of geometry is being outputted? If you check the scene in “Debug -> View Assets in Houdini”, do you see the “varmap” attribute being outputted?
Houdini Engine for Maya » Freeze Instancer
-
- awong
- 818 posts
- Offline
When you're outputting particles, all the per-point attributes should be available on the nParticle node. You shouldn't have to connect/create any attributes yourself. After caching, when you import the cache, I believe Maya will setup the per-particle attributes too. The only manual work might be hooking up the per-particle attributes from the nParticle to the particle instancer. But that shouldn't be too bad.
Houdini Engine for Maya » Freeze Instancer
-
- awong
- 818 posts
- Offline
I looked into this for a bit. It looks like disconnecting doesn't preserve the instances because Maya's instancer node doesn't cache the input connection's data. So a workaround might be output particles, instead of instances:
1. In the asset, output the instances as simple points, with the necessary instance attributes
2. Load the particles in Maya, and cache the particles with a Maya cache
3. Load the cache into a separate particle
4. Manually setup a Maya instancer to use the cached particles
This would completely separate the Houdini asset from the Maya instancer.
1. In the asset, output the instances as simple points, with the necessary instance attributes
2. Load the particles in Maya, and cache the particles with a Maya cache
3. Load the cache into a separate particle
4. Manually setup a Maya instancer to use the cached particles
This would completely separate the Houdini asset from the Maya instancer.
Houdini Engine for Maya » Xform data from Maya to Houdini
-
- awong
- 818 posts
- Offline
There's actually a really old RFE to support inputting locators. This is a really popular requests.
I can't promise anything, but let me see if I can squeeze some time out for this before the next release.
I can't promise anything, but let me see if I can squeeze some time out for this before the next release.
Houdini Engine for Maya » Multiple curves input
-
- awong
- 818 posts
- Offline
kahuna031
Looking more deeply at this it seems that what's passed from the hairsystem to Engine is not the original curve but the rebuilt “Output curve”. In the picture the dark blue curve is the input and the light blue curve is the output. As you see the output is not a correct representation of the original.
Have you tried the other method that I mentioned in an earlier post?
awong
The houdiniCurveMeshInput node doesn't actually require the hairSystem node. So what you could do is:
1. Manually create the houdiniCurveMeshInput node
2. Connect your curves to houdiniCurveMeshInput.inputCurves attribute
3. Connect houdiniCurveMeshInput.outputObjectMetaData to the houdiniAsset.input.inputGeo
A limitation is that all the curves have to have the same periodicity. If the number of curves need to change, you also have to manually adjust the houdiniCurveMeshInput.inputCurves connections.
This would avoid using Maya's hairsystem entirely. It's a bit of manual setup, but it's completely scriptable.
Houdini Engine for Maya » Scatter in Maya
-
- awong
- 818 posts
- Offline
Using Attribute Interpolate would be the right approach. But there are two things that you need to watch out for.
1. Getting the correct rest geometry. In Houdini, this is commonly done by using a timeshift node to get the geometry from the first frame. However, this doesn't work through Houdini Engine. Whenever Houdini Engine cooks, it only sees one snapshot of the Maya world. So time nodes cannot be used to get Maya geometry from an arbitrary frame. To workaround that, use a second input to pass in the rest geometry. This also means that you have to mesh the two input curves separately.
2. Geometry from PolyWire is not exactly stable. When the curve is deforming, the resulting geometry looks smooth and continuous. But if you look at the prim number, the prim number actually rearranges randomly. This break the interpolation workflow. So instead of using PolyWire, use Sweep with a circle.
See the attached scene and asset for an example. Hope this helps!
1. Getting the correct rest geometry. In Houdini, this is commonly done by using a timeshift node to get the geometry from the first frame. However, this doesn't work through Houdini Engine. Whenever Houdini Engine cooks, it only sees one snapshot of the Maya world. So time nodes cannot be used to get Maya geometry from an arbitrary frame. To workaround that, use a second input to pass in the rest geometry. This also means that you have to mesh the two input curves separately.
2. Geometry from PolyWire is not exactly stable. When the curve is deforming, the resulting geometry looks smooth and continuous. But if you look at the prim number, the prim number actually rearranges randomly. This break the interpolation workflow. So instead of using PolyWire, use Sweep with a circle.
See the attached scene and asset for an example. Hope this helps!
Edited by awong - 2016年9月16日 10:27:40
Houdini Engine for Maya » Houdini Normals to Maya
-
- awong
- 818 posts
- Offline
-
- Quick Links