Hi,
Is it possible to re-reference an asset in a scene in Solaris? I mean somebody authored a usd file with positions of assets but later we would like to change these references to point to another USD file while keeping the transform information on the node. Is this possible or it's against the logic of USD?
Thanks,
Mate
Found 65 posts.
Search results Show results as topic list.
Solaris and Karma » Re-referencing assets
- gadfly16
- 65 posts
- Offline
Solaris and Karma » Exporting point deformation into referencable layer
- gadfly16
- 65 posts
- Offline
Dear Friends,
Is there a way to deform a geometry with a SOP Modify node and export only the point deformation data into a layer that can be referenced back on the base geometry to make it deform? For some reason the deformation gets applied if I sublayering this layer onto the base geometry but not if I use referencing.
Thanks,
Mate
Is there a way to deform a geometry with a SOP Modify node and export only the point deformation data into a layer that can be referenced back on the base geometry to make it deform? For some reason the deformation gets applied if I sublayering this layer onto the base geometry but not if I use referencing.
Thanks,
Mate
Solaris and Karma » Applying point transforms effectively
- gadfly16
- 65 posts
- Offline
Ok. I got it. I have to delete the attributes that I don't want to store in the deformation layer. Kind of obvious. SOP Modify is only a wrapped SOP Import with some predefined inputs.
Thanks anyway,
Mate
Thanks anyway,
Mate
Solaris and Karma » Applying point transforms effectively
- gadfly16
- 65 posts
- Offline
Dear Friends!
I have a relatively heavy geometry with UVs, and Normals which is deforming. I would like to have a layer that only includes the deformations of the points.
What is the intended way to do this in Solaris?
Unfortunately I have to use "Flush Data After Each Frame" otherwise Hou runs out of memory and crashes.
I tried to use SOP Modify to update the point coordinates even after a layer break and sublayering it back over the geom, but the resulting layer's size keeps as big as the full geometry multiplied by the number of frames.
How can I create a layer that only stores the deformation information?
Thanks in advance,
Mate
I have a relatively heavy geometry with UVs, and Normals which is deforming. I would like to have a layer that only includes the deformations of the points.
What is the intended way to do this in Solaris?
Unfortunately I have to use "Flush Data After Each Frame" otherwise Hou runs out of memory and crashes.
I tried to use SOP Modify to update the point coordinates even after a layer break and sublayering it back over the geom, but the resulting layer's size keeps as big as the full geometry multiplied by the number of frames.
How can I create a layer that only stores the deformation information?
Thanks in advance,
Mate
Solaris and Karma » View alpha channel in Solaris viewport
- gadfly16
- 65 posts
- Offline
Solaris and Karma » View alpha channel in Solaris viewport
- gadfly16
- 65 posts
- Offline
Dear Friends!
Is it possible to check the alpha channel of a rendered image in the Solaris viewport? I can check all the AOVs with the side panel menu, but I don't know how to inspect individual channels, like R, G, B or most importantly alpha. The best I can do right now is to make a snapshot double click it and check the alpha channel in the Render Gallery window. Is there a better way to do this?
Thanks in advance,
Mate
Is it possible to check the alpha channel of a rendered image in the Solaris viewport? I can check all the AOVs with the side panel menu, but I don't know how to inspect individual channels, like R, G, B or most importantly alpha. The best I can do right now is to make a snapshot double click it and check the alpha channel in the Render Gallery window. Is there a better way to do this?
Thanks in advance,
Mate
Solaris and Karma » Layout variants
- gadfly16
- 65 posts
- Offline
Solaris and Karma » Layout variants
- gadfly16
- 65 posts
- Offline
Dear Friends!
Finally I worked it out and I learned a lot, so it might be useful if I jot down my experiences:
1. First of all: you can not override any parameter in a variant that is already defined locally on the primitive. Based on this I find it a bit misleading that Houdini suggests you yo chose another source primitive to sidestep this problem. The real solution is to not have that property defined in the first place. See the attached screenshot that I turned of the transform property generation on the box and sphere nodes to make it work. From the USD documentation it seems that attributes have a `Clear()` method to remove an already present property. That would be useful in this case, but I can't find a similar tool in Solaris. If you know of one please let me know!
2. If you don't want the geometry to be repeatedly included with the variants you should author your changes on empty primitives (possibly coming from a manifest as in my example).
With this two information bits in place a working example was pretty straightforward to make.
Best regards,
Mate
Finally I worked it out and I learned a lot, so it might be useful if I jot down my experiences:
1. First of all: you can not override any parameter in a variant that is already defined locally on the primitive. Based on this I find it a bit misleading that Houdini suggests you yo chose another source primitive to sidestep this problem. The real solution is to not have that property defined in the first place. See the attached screenshot that I turned of the transform property generation on the box and sphere nodes to make it work. From the USD documentation it seems that attributes have a `Clear()` method to remove an already present property. That would be useful in this case, but I can't find a similar tool in Solaris. If you know of one please let me know!
2. If you don't want the geometry to be repeatedly included with the variants you should author your changes on empty primitives (possibly coming from a manifest as in my example).
With this two information bits in place a working example was pretty straightforward to make.
Best regards,
Mate
Solaris and Karma » Value Clip Example
- gadfly16
- 65 posts
- Offline
Dear Friends!
Would someone be so kind and send me a working Value Clip example? For example a deforming geometry where the geometry deformation is written out frame by frame and read back looping. I just can't make this happen based on the documentation. Or if there is some tutorial or documentation with examples that would also work for me.
Thanks in advance,
Mate
Would someone be so kind and send me a working Value Clip example? For example a deforming geometry where the geometry deformation is written out frame by frame and read back looping. I just can't make this happen based on the documentation. Or if there is some tutorial or documentation with examples that would also work for me.
Thanks in advance,
Mate
Solaris and Karma » Layout variants
- gadfly16
- 65 posts
- Offline
Dear Friends!
Is it possible to use variants for different layouts efficiently? I mean I have a set of primitives under a root primitive and I would like to have different positions for these prims under different variants. The variant would only affect the positions of the prims of the set. (Think of `tidy room` vs `messy room`)
I can achieve this result with a simple setup of the `Add Variants to New Primitive` way, but then the resulting USD file has the primitives redefined in all variants. For heavy geometry this would be really ineffective.
If I try the `Add Variants to Existing Primitive` route I'm not even able to achieve this result. Usually I get into the `weaker opinion` forest, where I really doesn't know what's wrong and how should I fix it (I read the documentation, and `tried a different source primitive` with no luck. And honestly what other primitive?). The worst is that I don't understand what is happening and why. I'm very used to the fact that flexibility comes at the price of complexity, buy here I don't see that yet.
Could someone please explain me how this supposed to work, and why it works the way it does? Isn't variants are just layers? I can publish these changes as a sublayer but not as a variants? Why?
Thanks in advance,
Mate
Is it possible to use variants for different layouts efficiently? I mean I have a set of primitives under a root primitive and I would like to have different positions for these prims under different variants. The variant would only affect the positions of the prims of the set. (Think of `tidy room` vs `messy room`)
I can achieve this result with a simple setup of the `Add Variants to New Primitive` way, but then the resulting USD file has the primitives redefined in all variants. For heavy geometry this would be really ineffective.
If I try the `Add Variants to Existing Primitive` route I'm not even able to achieve this result. Usually I get into the `weaker opinion` forest, where I really doesn't know what's wrong and how should I fix it (I read the documentation, and `tried a different source primitive` with no luck. And honestly what other primitive?). The worst is that I don't understand what is happening and why. I'm very used to the fact that flexibility comes at the price of complexity, buy here I don't see that yet.
Could someone please explain me how this supposed to work, and why it works the way it does? Isn't variants are just layers? I can publish these changes as a sublayer but not as a variants? Why?
Thanks in advance,
Mate
Edited by gadfly16 - Nov. 24, 2022 08:25:50
Solaris and Karma » Pivot positions from Alembic to LOPs
- gadfly16
- 65 posts
- Offline
Dear Friends,
Is it possible to recreate the exact hierarchy with pivot positions of an Alembic model in LOPs?
I'm exporting a model from Blender and what I experience is that the during the conversions from SOPs to LOPs a new XForm primitive is created above every mesh primitive but the pivot positions are put on the mesh primitives instead of the XForms above them.
Since the parent relations are set up between the XForms it doesn't behave as the original, since every parent's pivot is at the origin in LOPs.
What am I doing wrong? What's I'm missing?
Thanks in advance,
Mate
Is it possible to recreate the exact hierarchy with pivot positions of an Alembic model in LOPs?
I'm exporting a model from Blender and what I experience is that the during the conversions from SOPs to LOPs a new XForm primitive is created above every mesh primitive but the pivot positions are put on the mesh primitives instead of the XForms above them.
Since the parent relations are set up between the XForms it doesn't behave as the original, since every parent's pivot is at the origin in LOPs.
What am I doing wrong? What's I'm missing?
Thanks in advance,
Mate
Solaris and Karma » Simple asset resolver
- gadfly16
- 65 posts
- Offline
Thanks!
Yes, it seems that the asset resolver is the intended way of doing these kinds of things, and I certainly would start to write one if I would have the time and resources.
Anyway I would happily do it in LOP level. In fact I was hoping to get informed that there is something like this in LOP level, something along the lines of output processors, but for inputs. Otherwise I can only imagine doing it in custom HDA-s that wrap the functionality of the sublayer and reference nodes. But that way I would probably loose the stage manager.
If you know about any resources of information about writing ARs without extensive C++ experience I would be grateful!
Thanks again,
Mate
Yes, it seems that the asset resolver is the intended way of doing these kinds of things, and I certainly would start to write one if I would have the time and resources.
Anyway I would happily do it in LOP level. In fact I was hoping to get informed that there is something like this in LOP level, something along the lines of output processors, but for inputs. Otherwise I can only imagine doing it in custom HDA-s that wrap the functionality of the sublayer and reference nodes. But that way I would probably loose the stage manager.
If you know about any resources of information about writing ARs without extensive C++ experience I would be grateful!
Thanks again,
Mate
Solaris and Karma » Simple asset resolver
- gadfly16
- 65 posts
- Offline
Hi there Everyone,
I ran into the known problem of overwriting USD files on a SMB share that are open in other sessions. We decided to switch from a simple push-pipeline to a pull-pipeline to avoid overwriting files all together. To make life easier I'm looking for a solution where if there is no version number at the end of a referenced USD filename a script would look for the newest version present and read that. We tried symlinks but SMB clients are not allowed to create symlinks on SMB shares, so we wouldn't be able to update them on the client side. Writing a proper asset resolver in C++ seems to be an unproportionally big task for such a simple task.
Is there any other way I can do this transparently so I don't have to implement it on every LOP node that reads USD files into the stage?
Thanks in advance,
Mate
I ran into the known problem of overwriting USD files on a SMB share that are open in other sessions. We decided to switch from a simple push-pipeline to a pull-pipeline to avoid overwriting files all together. To make life easier I'm looking for a solution where if there is no version number at the end of a referenced USD filename a script would look for the newest version present and read that. We tried symlinks but SMB clients are not allowed to create symlinks on SMB shares, so we wouldn't be able to update them on the client side. Writing a proper asset resolver in C++ seems to be an unproportionally big task for such a simple task.
Is there any other way I can do this transparently so I don't have to implement it on every LOP node that reads USD files into the stage?
Thanks in advance,
Mate
Edited by gadfly16 - Oct. 11, 2022 07:53:19
PDG/TOPs » Display and render different nodes in a HDA
- gadfly16
- 65 posts
- Offline
Dear All,
When I propagate the cook controls of a TOP network to a HDA interface is it possible to display one node and render another? There are clean-up nodes at the end of the graph that have to wait for all the upstream work items to finish so those don't really reflect the progress of the network. I hope this makes sense..
Thanks in advance,
Mate
When I propagate the cook controls of a TOP network to a HDA interface is it possible to display one node and render another? There are clean-up nodes at the end of the graph that have to wait for all the upstream work items to finish so those don't really reflect the progress of the network. I hope this makes sense..
Thanks in advance,
Mate
PDG/TOPs » Binary Dicing
- gadfly16
- 65 posts
- Offline
Dear All,
There is a technique called 'binary dicing' that means that you render your image sequences out of order. In theory it means that first you render your first frame, then the last, then the frame at the middle of your sequence, etc. In practice it means that you have every second frame of your sequence at the half of your total render time, every 4th frame in quarter of the total render time, every 8th frame in one eighth etc.
The logic is pretty simple to write. Needless to say how useful this feature can be in production. Yet the VFX world - at least what I see of it - seems to have forgotten this simple, elegant and useful technique. I first encountered it in the late 90's if I'm not mistaken, in Alfred, PRman's network scheduler.
Now I tried to implement it in PDG, but since batch processing have an assumption that batches MUST be and ordered set of frames, I can only give a suboptimal solution. The ideal solution would be:
1. generate the scene description out of order but in one batch (to amortize the cost of Houdini startup and scene loading). This is the part I can't implement at the moment.
2. render the images one by one also out of order with a standalone renderer
But it's not possible. I have two suboptimal alternatives:
A. generate the scene description in order in one batch, which means I have to wait this batch to finish before starting the image renders
or
B. generate the scene description frame by frame, swallowing the overhead of Houdini's startup and scene loading
I wrote this post because I think 'binary dicing' would be good for everyone. I think it should be a standard feature, but even if it's not, at least it should be reasonably easy to implement.
It's entirely possible that I don't see something that makes this unfeasible. If that's the case I would be interested.
Thanks for reading,
Mate
PS: I'm more than happy to share the Python code I came up with that shuffles any list into the 'binary diced' order.
There is a technique called 'binary dicing' that means that you render your image sequences out of order. In theory it means that first you render your first frame, then the last, then the frame at the middle of your sequence, etc. In practice it means that you have every second frame of your sequence at the half of your total render time, every 4th frame in quarter of the total render time, every 8th frame in one eighth etc.
The logic is pretty simple to write. Needless to say how useful this feature can be in production. Yet the VFX world - at least what I see of it - seems to have forgotten this simple, elegant and useful technique. I first encountered it in the late 90's if I'm not mistaken, in Alfred, PRman's network scheduler.
Now I tried to implement it in PDG, but since batch processing have an assumption that batches MUST be and ordered set of frames, I can only give a suboptimal solution. The ideal solution would be:
1. generate the scene description out of order but in one batch (to amortize the cost of Houdini startup and scene loading). This is the part I can't implement at the moment.
2. render the images one by one also out of order with a standalone renderer
But it's not possible. I have two suboptimal alternatives:
A. generate the scene description in order in one batch, which means I have to wait this batch to finish before starting the image renders
or
B. generate the scene description frame by frame, swallowing the overhead of Houdini's startup and scene loading
I wrote this post because I think 'binary dicing' would be good for everyone. I think it should be a standard feature, but even if it's not, at least it should be reasonably easy to implement.
It's entirely possible that I don't see something that makes this unfeasible. If that's the case I would be interested.
Thanks for reading,
Mate
PS: I'm more than happy to share the Python code I came up with that shuffles any list into the 'binary diced' order.
PDG/TOPs » Deadline scheduler questions
- gadfly16
- 65 posts
- Offline
Dear All,
I'm working on a TOP node that shuffles the order of the frames in a sequence and renders it in this shuffled order. (First the 'reference frames', while the rest of the frame list is 'binary diced'). I would like to render these frames on a Deadline farm. The logic is there, it works, renders the frames in this shuffled order, but I got two issues that stops me to enter the node into production:
1. Deadline shows the frame number wrong. On my work item both the `pdg_frame` and the `frame` attrib is set to the correct value. Yet Deadline Monitor seems to use the `index` for the frame number. I use the `index` attrib to force my render order, so that is obviously wrong. Is there a better way to force an arbitrary render order than using `index`? And/or is there a way to explicitly tell Deadline what frame number to display instead of `index`?
2. When I press MMB on the work items after generation I got: `Error: Unable to get Deadline task report due to lack of job or task id for this work item. Check Deadline Monitor.` After cooking I got: `Error: Unable to get Deadline task report for task 6 of job 624c2eccd06d632b88bdb8bb. Check Deadline Monitor.` After cooking it's also pretty slow to show the info window of the work item and this phenomenon makes Houdini pretty unstable. What do I do wrong here?
Do I miss some documentation that I need to read?
Thanks in advance,
Mate
I'm working on a TOP node that shuffles the order of the frames in a sequence and renders it in this shuffled order. (First the 'reference frames', while the rest of the frame list is 'binary diced'). I would like to render these frames on a Deadline farm. The logic is there, it works, renders the frames in this shuffled order, but I got two issues that stops me to enter the node into production:
1. Deadline shows the frame number wrong. On my work item both the `pdg_frame` and the `frame` attrib is set to the correct value. Yet Deadline Monitor seems to use the `index` for the frame number. I use the `index` attrib to force my render order, so that is obviously wrong. Is there a better way to force an arbitrary render order than using `index`? And/or is there a way to explicitly tell Deadline what frame number to display instead of `index`?
2. When I press MMB on the work items after generation I got: `Error: Unable to get Deadline task report due to lack of job or task id for this work item. Check Deadline Monitor.` After cooking I got: `Error: Unable to get Deadline task report for task 6 of job 624c2eccd06d632b88bdb8bb. Check Deadline Monitor.` After cooking it's also pretty slow to show the info window of the work item and this phenomenon makes Houdini pretty unstable. What do I do wrong here?
Do I miss some documentation that I need to read?
Thanks in advance,
Mate
PDG/TOPs » Deadline command line tasks from PDG
- gadfly16
- 65 posts
- Offline
PDG/TOPs » Deadline command line tasks from PDG
- gadfly16
- 65 posts
- Offline
Dear All,
I would like to send out some simple command line tasks to Deadline avoiding the startup cost of Houdini on the farm. I've got all the required information to create the command, so Deadline shouldn't be doing anything but run the command giving back the exit value (success or not). Is it possible to do this in TOPs?
Thanks in advance,
Mate
I would like to send out some simple command line tasks to Deadline avoiding the startup cost of Houdini on the farm. I've got all the required information to create the command, so Deadline shouldn't be doing anything but run the command giving back the exit value (success or not). Is it possible to do this in TOPs?
Thanks in advance,
Mate
PDG/TOPs » Promoting TOP item view to an HDA in another network
- gadfly16
- 65 posts
- Offline
PDG/TOPs » Promoting TOP item view to an HDA in another network
- gadfly16
- 65 posts
- Offline
Hey All,
the new File Cache node shows the work items of a top network inside the asset out on the SOP node when it runs in the background. It's implemented as a HDA. Yet I couldn't figure out howto implement this on my own HDA. Can someone please point me into the right direction?
Thanks in advance,
Mate
the new File Cache node shows the work items of a top network inside the asset out on the SOP node when it runs in the background. It's implemented as a HDA. Yet I couldn't figure out howto implement this on my own HDA. Can someone please point me into the right direction?
Thanks in advance,
Mate
-
- Quick Links