Jump to content

Jarom Brand

Nimble Customers
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Jarom Brand

  1. I agree with Pieter, 3DEqualizer seems to be what the guy who do tracking for a living seems to use and like. I've seen crazy stuff come from synthEyes, so that's worth looking into. There is also a 3D camera tracker in Cinema 4D which seems like its prettry good, for what it is. From what I understand they did a pretty big upgrade to it in R20. So it might also be worth checking out.
  2. Hey Jason, What I would really like is to get both dynamic and non-dynamic attributes that show up in the channelbox. I guess I could check to see if the object is a shape or a transform, and if it's a shape, only look for the user defined attributes which would probably work 99.9% of the time since I always lock and hide all non-dynamic attributes on shapes when dealing with them. But the perfectionist in me really wants it to work as described:) Thanks for the suggestion. I thought using the cb flag would do the same, but its leaving a bunch of them out. Not sure what that flag is actually doing. Ill have to dig into the mel scripts to find out.
  3. Does anyone know how to get a list of all the attributes that show up in the channelBox? I have something that works for transforms, but if I try it on shapes I get way more than I want. This is what I have so far: import pymel.core as pm def getChannelBoxAttrs(obj): ''' Returns a list of all the visible attributes @param PyNode: object The ojects whoes attributes will be toggled @return list: Returns a list of the attributes in the channelBox ''' visible_attrs = [] attribs = obj.listAttr(k=True, u=True) attribs.extend(obj.listAttr(k=True, l=True)) attribs.extend(obj.listAttr(cb=True)) #remove the parent transform attributes from the list parent_attrs = ['translate', 'rotate', 'scale'] for attrib in attribs: if not attrib.attrName(longName=True) in parent_attrs: visible_attrs.append(attrib) return visible_attrs obj = pm.selected()[0] getChannelBoxAttrs(obj) If I have a shape selected when I run this I will get this as a return: # Result: [Attribute(u'nurbsCircleShape1.controlPoints[-1].xValue'), Attribute(u'nurbsCircleShape1.controlPoints[-1].yValue'), Attribute(u'nurbsCircleShape1.controlPoints[-1].zValue'), Attribute(u'nurbsCircleShape1.uvSet[-1].uvSetName'), Attribute(u'nurbsCircleShape1.colorSet[-1].colorName'), Attribute(u'nurbsCircleShape1.colorSet[-1].clamped'), Attribute(u'nurbsCircleShape1.colorSet[-1].representation'), Attribute(u'nurbsCircleShape1.aiUserOptions'), Attribute(u'nurbsCircleShape1.aiTraceSets'), Attribute(u'nurbsCircleShape1.aiSssSetname'), Attribute(u'nurbsCircleShape1.aiRenderCurve'), Attribute(u'nurbsCircleShape1.aiCurveWidth'), Attribute(u'nurbsCircleShape1.aiSampleRate'), Attribute(u'nurbsCircleShape1.aiCurveShader'), Attribute(u'nurbsCircleShape1.aiCurveShaderR'), Attribute(u'nurbsCircleShape1.aiCurveShaderG'), Attribute(u'nurbsCircleShape1.aiCurveShaderB')] # Even though most of those don't actually show up in the channelBox. Also If anyone has a more elegant way of stripping out parent attributes, I'd love to see it. I never like hard coding things like that.
  4. I have actually not had the attributes reappear since posting this question. It seems to be such a random thing that it's hard to debug. if/when it does happen again, I'll give that a try.
  5. I watched most of it with my boys when it first came out. I'm not a fan of anime, but I thought it looked very nice and the choppy animation didn't bother me. It also reminded me of those 80's cartoons.
  6. Hey thanks for the suggestions Mark, I have not tried scrubbing it from the ascii file, but Ill give it a try. Its a hard one to reproduce because it only happens sometimes. Ill open and close the file multiple times over several days without any issue, then randomly it will happen. Ill also look into the controller node workflow. I've known about it, but have not spent the time to really look into it. I tend to avoid using scriptNodes, but that would definitely work
  7. I have been thinking about going to siggraph, I'm even registered. Just haven't purchased flight and hotel yet. But I would love to discuss this further.
  8. Ever since Autodesk included Arnold in maya, every NURBS curveShape now has these attributes: aiRenderCurve aiCurveWidth aiSampleRate aiCurveShaderR aiCurveShaderG aiCurveShaderB I like to place instanced NURBS curveShapes under controls to give animators access to the same attributes across multiple controls, say a fk/ik switch. So, to clean things up, I will lock and hide those new attributes and add my own: For the most part this works great, but those attributes that I locked and hid will randomly pop back into the Channel Box on their own. I assume it has something to do with Arnold plugin and that its putting them back, but I'd like to stop that from happening. Any Ideas?
  9. It sounds to me like you are getting double transformation, which is very common with clusters. I would recommend un-parenting the cluster from the control and create a zero group for it(So that the cluster has zeroed out transforms) Parent that zero group somewhere where it will not be transformed. Then do a direct connection from the Arrow control to the cluster handle. If that does not work, I would be happy to look at the file and see whats going on.
  10. This naming convention is one we came up with while I was at Mr. X. We capitalized the first letter because that's what the animation directors asked for. They liked the way it looked and felt like it was the cleanest. I have gotten used to it and now I prefer it. I have done very little with surfacing and materials in maya. All my work with surfacing, materials, lighting and rendering has been in Cinema 4D, and for some reason I tend to be rather sloppy with naming in C4D. So I can't really talk from experience on that, however what you have looks to be compliant with my naming convention.
  11. Hi @Jason! So sorry, I have been meaning to get back to this thread, but work has been crazy busy lately. I still want to dive into what I'm working on with naming conventions, but it will have to wait for life to calm down a bit so I can take the time to do it properly. In the mean time, here are my thoughts on naming conventions: The most important aspect of a good naming is consistency. So if you are consistent then <side>_<objectName>_<descriptive>_<TYPE> will work just fine. This is naming convention I like: <SIDE>_<ObjectName><descriptive><Numerator>_<Type> Why use this convention The driving force behind this naming convention is the need to present animators with a clean, easy to read rig. Typically all animators will see are the controls, however we will use this same convention for all rigging nodes as well as model geometry and its groups so that tool development can be consistent. This naming convention is not meant for system files and directories and will not work well as such. SIDE_NodeName##_NodeType In this convention there are only ever 2 underscores and only 1 if there is no side identifier. e.g. L_Arm_Ikh R_FkKnee_Ctrl Head_Jnt Chest_Ctrl SIDE(optional) Single letter side identifier followed by an underscore. If the object is centered or does not have an obvious side then there is no need for the side identifier Valid side identifiers: L - left R - right T - top(only if there is not a left and right side) B - bottom(only if there is not a left and right side) NodeName The node name describes what the thing is. For example the node name for the poleVector control could be ArmPV, or the node name for the head joint would be Head. CamelCase name of the node Always starts with a capital letter No underscores If there needs to be an adjective in the name, say Inner, Outer, Front, Back, Proximal, Distal, etc. Place it at the beginning e.g. Leg InnerEyeBrow FrontDoor ArmPV ##(optional padding) 2 digit padded numbering starting at 01. If there is only one object with a given side identifier and node name, then no number is needed, so don't add it. NodeType The NodeType is a suffix that is separated from the Node name with an underscore. it describes the type of node it is as well as its function. It is CamelCased, always starts with an upper case letter and there are no underscores within this section. e.g. Jnt - Joints that move renderable geometry through skin clusters or constraints Jx - Non-skinning joints(utility joints) Ctrl - Visible and selectable curves used for animation Grp - General transform used for organizing the hierarchy Null Mesh - Non-renderable polygon meshes surf - Non-renderable nurbs surfaces Ikh - IK Handels SkClus - Skin Clusters Clus - Clusters Loc - Space Locators MCNull - Mocap Null(a hidden null above the control where mobcap data is dumped) Offset - A group that offsets the parent space of a zero group Zero - A group that is used to Zero out the transform of its child. The name of the zero group should be the same as its child but with "Zero" added to the NodeType suffix. e.g. Head_CtrlZero L_ArmTwister_JntZero Geo - Renderable geometry Note: Any uncommon / less used node type like a FourByFourMatrix should be written out fully for clarity.
  12. Hey @Jason, Yeah, I'd love to share what I've been working on and get some feedback. I'll see about putting together some kind of a presentation over the weekend and share it here.
  13. Hi everyone My name is Jarom Brand. I have been in the VFX industry for a little over 10 years. My main focus is rigging, character FX and writing tools, though I have worked doing modeling, animating, lighting and rendering, as well as motion graphics. I know just enough about compositing to get myself in trouble when talking about it. I currently live in Utah with my wife and kids and travel to LA for short contract jobs, so I'm excited about all that Nimble Collective has to offer.
  • Create New...