[Bf-codereview] First set of fixes (issue 7193061)

lukas.toenne at gmail.com lukas.toenne at gmail.com
Mon Jan 28 10:42:50 CET 2013


Reviewers: bf-codereview_blender.org, brechtvl,

Message:
Forgot to add --send_mail to upload.py options, see mail before ...

Description:
Second issue for customnodes branch. First was uploaded by Brecht, so i
cannot add new patch sets (https://codereview.appspot.com/7099061/).

On 2013/01/21 12:40:22, brechtvl wrote:
> Testing the patch, I found these issues:

> * For Cycles in the material properties, it shows "No output node" in
the
> Surface and Displacement panels.

Fixed. Issue here is that the 'type' property in nodes is deprecated,
nodes are identified by strings that match the RNA type name. I changed
the type property back to using the old enum identifiers now (same as
bl_static_type property) to keep the ui scripts working, but in the long
run this should be changed to use the bl_idname string instead (e.g.
'OUTPUT_MATERIAL' -> 'ShaderNodeOutputMaterial')

> * For color sockets, it now shows the color box aligned to the right
of the node
> rather than the left. Is this intentional?  With e.g. a Diffuse BSDF
node this
> looks quite confusing to me.

Fixed. Socket value drawing now uses a UILayout, which is much nicer
than low-level uiDefBut functions but may require some tweaking to get
as close as possible to the previous look.

> * When doing "Make Group", there is a submenu with one item. That
seems
> pointless, and I'm not even sure why there has do be a popup in the
first place.

Items in this submenu depend on the node selection:
- The usual "From Selected" is always present and calls the standard
make_group operator (or rather a generalized "insert_selected" function)
- If active node is a group node, it shows additionally "Insert",
meaning all other nodes will be inserted into that group.

I realize this is too complicated on user level. The second option could
be a different operator as well, then the submenu is not needed. We're
just running out of usable keymap items :S

I'd also like to revisit the grouping/ungrouping operators to move the
low-level hacks into a nice API function to move nodes between trees or
maybe just make exact copies (anim data is a problem though). That would
open the door for scripted grouping operators in the future.

> * When entering a group, there is a green background color shown. I'm
not sure a
> different background color is needed, a good indication in the header
is enough
> I think.

The main purpose of this background drawing is to give an indication of
the tree "history" of the node editor, especially since we can now open
unlimited nested node groups. It tries to mimick the old way of group
"edit mode".

I had a simpler variant first that displayed a tree path string in the
lower left cornder (e.g. "Material/NodeGroup/NodeGroup2"), but that was
abstract and hard to parse quickly. I'm open to suggestions, but i think
we need a good visualization of the successive node groups that have
been opened.

> * Group Input/Ouptut nodes have a black header here, missing version
patch for
> theming?

Yes, forgot about that. Added do_versions for the theme color in
resources.c. Default for now is a slightly desaturated yellow, can be
changed if UI mafia want to.

> * It seems that you can put Group Input/Output nodes in groups
themselves. I
> guess that's not intenional.

Indeed, fixed so that input/output nodes stay in their original node
tree, as if they were not selected.

> * When there are no nodes selected or use nodes is disabled, it
doesn't show the
> grid lines. I think they should show still, I think it's a good visual
cue for
> quickly seeing which editor type you're looking at. Other editors like
graph or
> image do the same.

Agreed, added this back.

> * Cycles Render > open node editor > add new material, it prints
> "RNA_string_set: NodeSocketShader.value_property not found." in the
console.

Fixed.

> * Cycles render > open node editor > add new material > press pin
button > split
> node editor in two > crash.

Can't reproduce this. Maybe got fixed by changes to node space draw
function...

> * Cycles render > open node editor > add new material > Diffuse BSDF
color has 0
> alpha value instead of 1.

Fixed.

About cycles color sockets: These are generally RGB instead of RGBA.
Currently there is still just one common NodeSocketColor type used
throughout shader and compositor node (you can change alpha values for
cycles nodes in trunk too). It would probably make sense to have 2
separate standard socket types for both RGB and RGBA color models.
Socket types can be defined for specific tree type as well, there is no
need to use the exact same socket definitions for the data types
throughout all systems, so in the long run could have Cycles/BI sockets
vs. compositor sockets for cleaner design.

> * Cycles render > open node editor > add new material > select Diffuse
BSDF >
> make group > exit group. Group color socket has black rather than
white color.

Fixed. Now a socket interface can initialize itself based on an existing
socket when exposed (by connecting to the "virtual" extension socket, in
trunk the equivalent was to drag a link outside the group bounding box).
This copies the appropriate property settings such as current value,
subtype, etc. as defaults for the group socket. After this
initialization these values are independent from the internal socket and
can be tweaked if necessary.

> * Cycles render > open node editor > add new material > pin > change
to display
> compositing nodes:
>      layout.prop(snode_id.render, "use_free_unused_nodes", text="Free
Unused")
> AttributeError: 'Material' object has no attribute 'render'

Fixed, pinning is now ignored when switch tree types or no node tree is
active yet (i.e. "use_nodes" updates node trees once even when pinned).

> * Cycles render > open node editor > change to texture nodes > crash.

Fixed.

> * I think the pin icon should be to the right of the datablock
selector as it is
> in the image editor.

Fixed.


Please review this at https://codereview.appspot.com/7193061/

Affected files:
   M     blenkernel/BKE_blender.h
   M     blenkernel/BKE_node.h
   M     blenkernel/intern/image.c
   M     blenkernel/intern/mask.c
   M     blenkernel/intern/movieclip.c
   M     blenkernel/intern/node.c
   M     blenlib/CMakeLists.txt
   M     blenloader/intern/readfile.c
   M     blenloader/intern/readfile.h
   M     blenloader/intern/versioning_250.c
   M     blenloader/intern/writefile.c
   M     compositor/intern/COM_CompositorContext.cpp
   M     compositor/intern/COM_CompositorContext.h
   M     compositor/intern/COM_Converter.cpp
   M     compositor/intern/COM_ExecutionSystem.cpp
   M     compositor/intern/COM_ExecutionSystemHelper.cpp
   M     compositor/intern/COM_InputSocket.cpp
   M     compositor/intern/COM_InputSocket.h
   M     compositor/intern/COM_Node.cpp
   M     compositor/intern/COM_NodeBase.h
   M     compositor/intern/COM_Socket.cpp
   M     compositor/intern/COM_Socket.h
   M     compositor/nodes/COM_BlurNode.cpp
   M     compositor/nodes/COM_BokehBlurNode.cpp
   M     compositor/nodes/COM_ColorCurveNode.cpp
   M     compositor/nodes/COM_ColorNode.cpp
   M     compositor/nodes/COM_GroupNode.cpp
   M     compositor/nodes/COM_LensDistortionNode.cpp
   M     compositor/nodes/COM_NormalNode.cpp
   M     compositor/nodes/COM_SocketProxyNode.cpp
   M     compositor/nodes/COM_ValueNode.cpp
   M     editors/include/ED_node.h
   M     editors/include/UI_interface.h
   M     editors/include/UI_resources.h
   M     editors/include/UI_view2d.h
   M     editors/interface/interface_draw.c
   M     editors/interface/interface_handlers.c
   M     editors/interface/interface_intern.h
   M     editors/interface/interface_templates.c
   M     editors/interface/interface_widgets.c
   M     editors/interface/resources.c
   M     editors/interface/view2d.c
   M     editors/object/object_add.c
   M     editors/render/render_shading.c
   M     editors/screen/screen_ops.c
   M     editors/space_node/drawnode.c
   M     editors/space_node/node_add.c
   M     editors/space_node/node_buttons.c
   M     editors/space_node/node_draw.c
   M     editors/space_node/node_edit.c
   M     editors/space_node/node_group.c
   M     editors/space_node/node_header.c
   M     editors/space_node/node_intern.h
   M     editors/space_node/node_ops.c
   M     editors/space_node/node_relationships.c
   M     editors/space_node/node_select.c
   M     editors/space_node/node_templates.c
   M     editors/space_node/node_view.c
   M     editors/space_node/space_node.c
   M     makesdna/DNA_node_types.h
   M     makesdna/DNA_space_types.h
   M     makesrna/RNA_access.h
   M     makesrna/RNA_define.h
   M     makesrna/RNA_enum_types.h
   M     makesrna/intern/CMakeLists.txt
   M     makesrna/intern/rna_access.c
   M     makesrna/intern/rna_define.c
   M     makesrna/intern/rna_lamp.c
   M     makesrna/intern/rna_main_api.c
   M     makesrna/intern/rna_material.c
   M     makesrna/intern/rna_nodetree.c
   D     makesrna/intern/rna_nodetree_types.h
   M     makesrna/intern/rna_scene.c
   M     makesrna/intern/rna_space.c
   M     makesrna/intern/rna_texture.c
   M     makesrna/intern/rna_ui_api.c
   M     makesrna/intern/rna_userdef.c
   M     makesrna/intern/rna_world.c
   M     nodes/CMakeLists.txt
   A     nodes/NOD_common.h
   M     nodes/NOD_composite.h
   M     nodes/NOD_shader.h
   M     nodes/NOD_socket.h
   A  +  nodes/NOD_static_types.h
   M     nodes/NOD_texture.h
   M     nodes/composite/node_composite_tree.c
   A     nodes/composite/node_composite_util.c
   M     nodes/composite/node_composite_util.h
   M     nodes/composite/nodes/node_composite_alphaOver.c
   M     nodes/composite/nodes/node_composite_bilateralblur.c
   M     nodes/composite/nodes/node_composite_blur.c
   M     nodes/composite/nodes/node_composite_bokehblur.c
   M     nodes/composite/nodes/node_composite_bokehimage.c
   M     nodes/composite/nodes/node_composite_boxmask.c
   M     nodes/composite/nodes/node_composite_brightness.c
   M     nodes/composite/nodes/node_composite_channelMatte.c
   M     nodes/composite/nodes/node_composite_chromaMatte.c
   M     nodes/composite/nodes/node_composite_colorMatte.c
   M     nodes/composite/nodes/node_composite_colorSpill.c
   M     nodes/composite/nodes/node_composite_colorbalance.c
   M     nodes/composite/nodes/node_composite_colorcorrection.c
   M     nodes/composite/nodes/node_composite_common.c
   M     nodes/composite/nodes/node_composite_composite.c
   M     nodes/composite/nodes/node_composite_crop.c
   M     nodes/composite/nodes/node_composite_curves.c
   M     nodes/composite/nodes/node_composite_defocus.c
   M     nodes/composite/nodes/node_composite_despeckle.c
   M     nodes/composite/nodes/node_composite_diffMatte.c
   M     nodes/composite/nodes/node_composite_dilate.c
   M     nodes/composite/nodes/node_composite_directionalblur.c
   M     nodes/composite/nodes/node_composite_displace.c
   M     nodes/composite/nodes/node_composite_distanceMatte.c
   M     nodes/composite/nodes/node_composite_doubleEdgeMask.c
   M     nodes/composite/nodes/node_composite_ellipsemask.c
   M     nodes/composite/nodes/node_composite_filter.c
   M     nodes/composite/nodes/node_composite_flip.c
   M     nodes/composite/nodes/node_composite_gamma.c
   M     nodes/composite/nodes/node_composite_glare.c
   M     nodes/composite/nodes/node_composite_hueSatVal.c
   M     nodes/composite/nodes/node_composite_huecorrect.c
   M     nodes/composite/nodes/node_composite_idMask.c
   M     nodes/composite/nodes/node_composite_image.c
   M     nodes/composite/nodes/node_composite_inpaint.c
   M     nodes/composite/nodes/node_composite_invert.c
   M     nodes/composite/nodes/node_composite_keying.c
   M     nodes/composite/nodes/node_composite_keyingscreen.c
   M     nodes/composite/nodes/node_composite_lensdist.c
   M     nodes/composite/nodes/node_composite_levels.c
   M     nodes/composite/nodes/node_composite_lummaMatte.c
   M     nodes/composite/nodes/node_composite_mapRange.c
   M     nodes/composite/nodes/node_composite_mapUV.c
   M     nodes/composite/nodes/node_composite_mapValue.c
   M     nodes/composite/nodes/node_composite_mask.c
   M     nodes/composite/nodes/node_composite_math.c
   M     nodes/composite/nodes/node_composite_mixrgb.c
   M     nodes/composite/nodes/node_composite_movieclip.c
   M     nodes/composite/nodes/node_composite_moviedistortion.c
   M     nodes/composite/nodes/node_composite_normal.c
   M     nodes/composite/nodes/node_composite_normalize.c
   M     nodes/composite/nodes/node_composite_outputFile.c
   M     nodes/composite/nodes/node_composite_pixelate.c
   M     nodes/composite/nodes/node_composite_premulkey.c
   M     nodes/composite/nodes/node_composite_rgb.c
   M     nodes/composite/nodes/node_composite_rotate.c
   M     nodes/composite/nodes/node_composite_scale.c
   M     nodes/composite/nodes/node_composite_sepcombHSVA.c
   M     nodes/composite/nodes/node_composite_sepcombRGBA.c
   M     nodes/composite/nodes/node_composite_sepcombYCCA.c
   M     nodes/composite/nodes/node_composite_sepcombYUVA.c
   M     nodes/composite/nodes/node_composite_setalpha.c
   M     nodes/composite/nodes/node_composite_splitViewer.c
   M     nodes/composite/nodes/node_composite_stabilize2d.c
   M     nodes/composite/nodes/node_composite_switch.c
   M     nodes/composite/nodes/node_composite_texture.c
   M     nodes/composite/nodes/node_composite_tonemap.c
   M     nodes/composite/nodes/node_composite_trackpos.c
   M     nodes/composite/nodes/node_composite_transform.c
   M     nodes/composite/nodes/node_composite_translate.c
   M     nodes/composite/nodes/node_composite_valToRgb.c
   M     nodes/composite/nodes/node_composite_value.c
   M     nodes/composite/nodes/node_composite_vecBlur.c
   M     nodes/composite/nodes/node_composite_viewer.c
   M     nodes/composite/nodes/node_composite_zcombine.c
   M     nodes/intern/node_common.c
   M     nodes/intern/node_common.h
   M     nodes/intern/node_exec.c
   M     nodes/intern/node_exec.h
   M     nodes/intern/node_socket.c
   M     nodes/intern/node_util.c
   M     nodes/intern/node_util.h
   M     nodes/shader/node_shader_tree.c
   M     nodes/shader/node_shader_util.c
   M     nodes/shader/node_shader_util.h
   M     nodes/shader/nodes/node_shader_add_shader.c
   M     nodes/shader/nodes/node_shader_ambient_occlusion.c
   M     nodes/shader/nodes/node_shader_attribute.c
   M     nodes/shader/nodes/node_shader_background.c
   M     nodes/shader/nodes/node_shader_brightness.c
   M     nodes/shader/nodes/node_shader_bsdf_anisotropic.c
   M     nodes/shader/nodes/node_shader_bsdf_diffuse.c
   M     nodes/shader/nodes/node_shader_bsdf_glass.c
   M     nodes/shader/nodes/node_shader_bsdf_glossy.c
   M     nodes/shader/nodes/node_shader_bsdf_refraction.c
   M     nodes/shader/nodes/node_shader_bsdf_translucent.c
   M     nodes/shader/nodes/node_shader_bsdf_transparent.c
   M     nodes/shader/nodes/node_shader_bsdf_velvet.c
   M     nodes/shader/nodes/node_shader_bump.c
   M     nodes/shader/nodes/node_shader_camera.c
   M     nodes/shader/nodes/node_shader_common.c
   M     nodes/shader/nodes/node_shader_curves.c
   M     nodes/shader/nodes/node_shader_emission.c
   M     nodes/shader/nodes/node_shader_fresnel.c
   M     nodes/shader/nodes/node_shader_gamma.c
   M     nodes/shader/nodes/node_shader_geom.c
   M     nodes/shader/nodes/node_shader_geometry.c
   M     nodes/shader/nodes/node_shader_hair_info.c
   M     nodes/shader/nodes/node_shader_holdout.c
   M     nodes/shader/nodes/node_shader_hueSatVal.c
   M     nodes/shader/nodes/node_shader_invert.c
   M     nodes/shader/nodes/node_shader_layer_weight.c
   [[ 65 additional files ]]




More information about the Bf-codereview mailing list