New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Inserted keyframes in material node graph don't show up in graph editor or anywhere else #167
Comments
Unfortunately, this is a Blender limitation. |
Dang, that's a bummer. Has there been any activity in Blender 2.8 that would allow for third-party node animations? |
I haven't seen any, but I don't follow the development too closely. I added some related bug reports/questions to your first post. |
Would it be feasible to add support for getting basic transform properties of objects from the material graph as scalar or vector/color values? For example the object scale as a color or 3D vector, or the X position as a scalar. That would give us a few animatable controls for materials until Blender figures their stuff out on this. |
What you can do if you know a little Python is something like the following: import bpy
from bpy.app.handlers import persistent
@persistent
def handler(scene):
node_tree = bpy.data.node_groups["Material.004"]
matte = node_tree.nodes["Matte Material"]
frame = scene.frame_current
matte.inputs["Opacity"].default_value = frame / 100
def register():
bpy.app.handlers.frame_change_post.append(handler)
def unregister():
bpy.app.handlers.frame_change_post.remove(handler)
if __name__ == "__main__":
register() Another idea is: I could create a node that outputs the current frame, and you can then work with this with the math nodes (however they are a bit limited at the moment). |
That’s way too hardcoded for my taste. I’d prefer to be able to control values via the graph editor ideally. A node which could select an object (like how the smoke data node allows you to select the domain), and extract transform values would be a functional workaround to animate arbitrary properties by animating those transforms. Edit: I might just fork this and experiment this weekend with workarounds. |
Yes, this is possible with the "more general" version of the node I mentioned:
The datablock could be an object, a scene, image etc. |
I have an initial draft working, however it still needs some refinement. Another thing I'd like to support is accessing attributes through multiply calls, e.g. (And if we want to get really fancy, the output socket would change depending if the property is a vector or scalar...) I opened a new branch for this node: https://github.com/LuxCoreRender/BlendLuxCore/tree/feature/propertyaccess_node |
You can do funny stuff with this node. Todo:
|
This turned out to be much more complicated than I thought, so I dropped this idea. Stuff I added:
|
On your checklist, for the function call example, it would probably be better and more flexible for artists to add those as other nodes like I listed in LuxCoreRender/LuxCore#118. A node for vector normalization and another for splitting vectors/colors into their scalar components would reduce the complexity of the property access node, and add extra flexibility for other stuff like what I talked about in the other issue. Also, even though this technically started as a workaround, I’m very excited for this now. Dynamic effects based on other object arbitrary properties is exactly what every offline renderer needs, in my opinion, and by wrapping it in even the most barebones of nodes gives a lot of power to artists. Even now, I just had an idea to use this to compute distance from an object inside of a heterogenous volume to add procedural clouds or fog around that object. |
Yes, I think I will not add function call support for now because it adds another bunch of complexity. For example, how to handle functions that expect arguments? Maybe this can be added at a later time. The only thing I want to try is to add a popup that shows the available attributes (basically a filtered |
One idea I had for easier deeply nested property access, at the cost of another new node and a connection data type, was to separate out the object selection node and a property access node, then have all the property access nodes work recursively (sort of). Additionally, an array index/slice menu on the property node. So for your
On each Property Node it would auto-populate a dropdown with If the selected property is an array, it would offer the index/slice options and do the same as the previous two outcomes with the result of that index/slice operation. Furthermore, this would allow for branching selections, like if they want to select the What do you think of that? |
This sounds good, it solves several issues in an elegant way. Do you want to have a go at it? |
Looking good. |
Alternative coded solution is to directly apply values from driver function: Not a perfect solution but it works. |
Apparently you have to have the object AND the node selected, for the keyframes to appear. I found this old thread because I was having the same issue, and stumbled across this solution on another site, and it worked for me. |
This is the case for Cycles nodes, but it does not work on LuxCore node trees - the keyframes never appear in the graph editor. |
I am having the same issue with Sverchok. I am trying to simply keyframe a Vector Lerp, but keyframes do not show up and values I modify get not registered. |
First select the node with the keyframes, go into the Dope Sheet, and voila, there is the keyframe! and you can edit it and everything! |
Description
I've been trying to animate some material properties from the node graph, and while I can add keyframes to node fields (like animating opacity), they simply don't show up in the graph editor or dope sheet like they would for Cycles and so forth.
Unfortunately, this also forces the default (non-linear) interpolation between those keyframes.
System Information
Windows 10 Pro with GTX 970 GPU
Software Version
Related:
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
The text was updated successfully, but these errors were encountered: