Jump to content


Regular Member
  • Content Count

  • Joined

  • Last visited

  • Days Won


Cairyn last won the day on February 12

Cairyn had the most liked content!

Community Reputation

86 Noble Beginner

About Cairyn

  • Rank
    Cafe Ronin

Profile Information

  • First Name
  • Last Name
  • Location
  • Website URL

Cinema 4D Information

  • C4D Version

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Select the option in the tools window (not the checkbox, the description text). Drag the option to the Console window. There you go. (MESH_CHECK_NORMAL is already the correct constant for non planar polygons though.)
  2. The mesh checking options are hidden away in the snap settings tools... import c4d from c4d.modules import snap def main(): bc = snap.GetSnapSettings(doc) isSet = bc.GetBool(c4d.MESH_CHECK_NORMAL,True) bc.SetBool(c4d.MESH_CHECK_NORMAL,not isSet) snap.SetSnapSettings(doc, bc) c4d.EventAdd() if __name__=='__main__': main() Find more scripting stuff under https://www.patreon.com/cairyn (first 2 parts are free)
  3. Are the bones one single mesh, or do you have separate meshes for each bone? I interpret your text as the latter... If the bones are one mesh, you can simply skin it (C4D skin object), use the same joints that you use for the epidermis (sorry, don't want to call it skin as it is ambiguous), and weight the bones 100% to a single joint each so they move like hardbody objects. Note that joints can influence more than one skin object. If the bones are separate meshes, you can just sub-group them to the joint objects themselves so they move together with the joints; no need for skins or weights in this case as the movement is "robotic". There are probably even more ways to solve the issue...
  4. Cinema 4D uses its own GUI code to allow common handling for all supported operating systems. So, not all standard OS specific behaviorisms are supported. I do not think that the Windows Alt functionality for menus is available. I don't even see how this can be practical in a GUI where you may have a menu in any window. In my layout, I have the main menu, the viewport menu (in a tab, even), the OM menu, the layers menu... to determine which menu to open, you'd need at least to point the mouse at the proper window, which in case of the main menu means that the mouse is as good as on the menu anyway... If you really miss Alt-something combinations, you can define them yourself through the customize command window. Alt-F~S can be set as two-key shortcut for Save, e.g. (you will lose existing Alt-combinations though - Alt-F currently opens the F-curve display). This will require a lot of manual work, though, as you'd need to define a shortcut for each menu item. And I do not exactly recommend keyboard shortcuts that use changing qualifiers (in this case Alt/not Alt) because it's hard on the fingers. Myself, I have indeed defined tons of shortcuts - not industry compatible, but logically sequenced - starting with one key for the functional group, then continuing a shortcut for the actual command (like - R for render, then I for interactive render region, or V for viewport, or T plus more letters for Team Render). That means quite often three-key shortcuts (more keys are not really practical) but they are easy to memorize. Or you just use the Commander window. Or the star menu. Or...
  5. Maybe I misunderstand your usecase, but isn't this just two settings - one in the preferences to select the theme, and one setting for the layout (if even needed)? If you're looking for an installer for the customer's hard disk (which would normally not be a C4D plugin) to write new themes and icons (etc) to the C4D installation, then there are many standalone installation programs on the market that won't require any new development?
  6. Thank you, I'm still studying this stuff... dancing on too many parties at the moment (figuratively speaking, naturally)
  7. I don't quite get what the question even is about, but C4D stores rotational values only in the objects themselves. The points of an object are always given in the coordinate system of the object, so each point (and therefore a position) is merely a xyz vector. If you start with the xyz position of a point in C4D, then you need to multiply that vector with the global matrix of the host object (which is available in the API) or alternatively with all local matrices of all parent objects in the correct sequence. This will cause the rotation, position, and scale of the parent systems to be combined into the original point position. If you start with a point from some external system in world coordinates, you need to do the same but backwards (multiply with the inverted global matrix) to yield the relative position of the point in the object's coordinate system. Unless you script that, you would probably need to move the object's system (axis mode) to the world coordinate system; then import the point data, then move the object's system back. But I don't know Vectorworks so I don't see your usecase yet.
  8. From the topic title, I'd assume the problem are the shaded triangles in the screenshot, which look wrong. That may be an effect of self shadowing when the light is coming in at a very low angle. Try playing with the shadow maps and light/shadow generation. Or upload the scene.
  9. I thought so... IMHO the snapping is really sensitive when it comes to placement of rotational pivots; having the alignment even slightly out of whack creates accumulated errors later on even if everything seems fine when eyeballing. The way the snapping is implemented in C4D requires a good deal of forethought and moving the axis widget accordingly for the next rotation... Personally, I wouldn't mind some instant-snap-alignment functions that move an object according to the relative placement of a reference polygon, but that requires additional functionality to determine rotation and size. Maybe I'll program a tool for that...
  10. Hmm, you got me there: How do you rotate the axis widget precisely with the axis extension? Normally, you have an object to go with the widget, and you snap the extension to a point on the object, and then rotate that point towards the target with the left mouse button. But in this case, you only have the axis widget with no geometry to determine a reference point. Nor does the axis extension snap to anything on the widget itself. I can only eyeball the axis extension line, which is not quite as precise as I'd like it to be.
  11. Sorry, I'm afraid that's so basic that I don't remember any tutorial covering it. You should be able to work towards it with the internal help files; start with the automatically generated Set Driver / Set Driven XPresso, and then replace the driver by the user data, and copy the driven to all the other nubs. That should give you a simple start setup
  12. Maybe you should show an example, I have no idea what you mean... snap together polygons of a single object? Snap together 2 objects by one sample triangle each? "Make copies" what? With only one triangle?
  13. That looks fairly trivial, if the model is as symmetric as it looks. Use a null or a user data slider (which is preferrable since it has limits) to control the thing. Transfer the values from this user slider by XPresso to the rotating nubs to make all 4 of them move at the same time. Control the upper rack by either connecting it to one of the nubs, with the inverse value of the user data slider (so it stays horizontal), or use sin and cos functions manually to keep it locked in place. For the hydraulics, use two target expressions to make the rods point at each other.
  14. Have you tried adding a whitespace character as first letter if there is only one digit? (You may need to use one of the Unicode spaces if the ASCII space is handled specially.) If there is the same number of characters in the string, the kerning should stay with the same index.
  • Create New...