Jump to content

Dear Visitors

If your confirmation email doesn't arrive, give us some time while we manually approve your account. Support ticket is not necessary, we are checking new registrations regularly and approving if registration requirements are met.

Please read Rules & Guidelines before posting around Forums. Information we seek is minimal and in the end saves us a lot of time and we are able to provide solutions faster.

Please consider supporting us via Contributions for all the work we are doing. Contributing even with the smallest amount, will remove ALL AD's and unlock some nice features like being able to be Tipped for providing help, or file etc.


SharpEars

Regular Member
  • Posts

    97
  • Joined

  • Last visited

Profile Information

  • First Name
    SharpEars
  • Location
    Chicago

HW | SW Information

  • C4D
    R23
  • OS
    Windows
  • CPU
    i9-7980XE
  • GPU
    Nvidia 1080Ti

Recent Profile Visitors

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

SharpEars's Achievements

Apprentice

Apprentice (3/14)

  • Reacting Well Rare
  • First Post Rare
  • Collaborator Rare
  • Conversation Starter Rare
  • Dedicated Rare

Recent Badges

17

Reputation

  1. Are there at least Release Notes for R25.117?
  2. You are largely correct, with one very large exception. Because objects can be fairly complex and the Python API is barren (as compared to the C++ SDK) and is implemented (strictly) from a "easy to use" rather than a performance perspective, the transfer of information from inside C4D to Python (and back) is often done very inefficiently. The general paradigm is to copy data and create new Python containers (i.e., lists) rather than make incremental changes to whatever data the Python programmer already has available or has received back from a prior call. There is also, within Cinema 4D the need to (deep) clone objects over and over again, but that's a separate topic that is orthogonal to the use of Python. This "copy everything on request or submission" paradigm in particular is what makes the Python API slow when it comes to creating and/or manipulating the guts (i.e., points/edges/polygons) of large objects, splines with many points/segments, and/or object hierarchies consisting of many objects. If you ask me, the Python API should be enhanced with more performant versions of calls, with backward compatibility, of course, and further enriched. Then there would perhaps be a hope and a prayer towards (better) performance. I did not mention the issue of threading in the above, but that is another Python limitation that is far more difficult for Maxon to address from an API evolution perspective, since it is a limitation within Python itself.
  3. It's Python after all, the language for quickly "banging something out," unless you expect it to also be performant, that is. Everyone that doesn't wear the "blinders of ignorance" knows that you can't do much worse than choosing the poster child for "slow, poorly performing code" - Python.
  4. Here is a picture of a few, for reference, created with the following parameters: First one: Radius: 25, P: 2, Q: 3, Cross Section Radius: 4 Second one: P: 3, Q: 4, (all else same) Third one: P: 4, Q: 5, (all else same)
  5. Hey, where is the obligatory, "WARNING: Not for the squeamish tag?" 🙄
  6. Or they want to fix the other dup bugs that have been found in addition to the ones fixed, and release a .116 (?) hotfix.
  7. First pass attempt at scripting this via a Python generator (make sure to view full size, it's 1080p, sized down from 4k): The reddish circle Nulls identify misaligned neighboring points. The green marker Nulls indicate where the master of the two points should be, in order for them to merge into and occupy one shared point as a result of the Symmetry generator (i.e., mid-point). Another example: Somewhere on the Platonic, below, which has been converted to an Editable Object, lies a point that divides an edge, that shouldn't exist. See it? Neither do I! I just got done cutting one of the many edges into a smaller part and a larger part. But, having zoomed out, they all look the same and even I can't tell or remember which edge it was. Sure, Optimize, with the correct settings (usually found through trial and error, btw!) can fix this and get rid of the smaller (sub-)edge via welding, but where in the world is it? Will Optimize weld correctly, retaining symmetry and alignment? (Note: Probably not, if experience is anything to go by!) Will it remove any points that should not have been removed? Who knows... OK, to be fair with regard to this particular case, all of the edges, except for two, are of the same length, so Optimize will probably do the right thing once set up correctly. Anyhow, enough about Optimize. We plop the object into the Python Generator I've started writing the code for, let it do its thing, and we get the following: Ahh, there it is (i.e., well, there they are - the points that make up the shorter of the two edges)! Let's zoom in and take a look at the situation, now that we know where on this complex map, it lies. I have gone ahead and selected all of the points of the modified Platonic, in order to make things more clear. The red circle Nulls (overly large for this case, I know) mark two very close adjacent points. The green sphere Null marks the midpoint to which they can be welded, if so desired. Of course, we can always choose to weld to one of the two points - it's our choice to make: Correctly choosing among the three possibilities, with human understanding of the object's point layout, symmetry, role, and context (i.e., something Optimize could never do), we perform a proper spot-weld and restore our poor cut-up Platonic to its former beautiful symmetric glory.
  8. Not sure what you mean by the abbreviation of VP, but certainly an option to Optimize would be welcome, or perhaps an addition to the Mesh Checker, not sure how. I just might script it up myself, in the direction of the fourth example image perhaps with an additional target null marking where the point should be moved to, assuming the midpoint is the correct place. This is complicated by the fact that there may be more than two points that are in close proximity and need to be welded together. Also, turns out that optimize doesn't even weld to a location in the middle! It just welds one point to the location of another, somewhat arbitrarily (perhaps having to do with point order or how optimize works). I guess I can compare my results with those of Optimize to make sure I am doing the right thing...
  9. Sometimes, when using the Cloner and/or Symmetry, you would like to know if any points are ever so slightly out of alignment. This causes the points of clones/symmetric objects to be slightly off, requiring a corresponding subsequent weld with an offset large enough to accommodate the offset caused by the misalignment. This can be accomplished by using a subsequent Connect or by using the Weld feature of the Symmetry itself, for symmetry operations. Interestingly, if you take the combined object created by the Cloner and/or Symmetry and do a "Connect Objects" command on it, then go into points mode on the resulting composite object, you can then use Optimize to weld those pesky just slightly off points. What I am looking for is a way to: After using "Connect Objects" to convert the cloned/symmetrized part, just mark and/or identify the points that would be welded via Optimize with a certain tolerance value. I don't want them removed/welded, just marked so that I know which/where they are. Then I can use this information to locate them in the original pre-Cloner/Symmetry object part and adjust/align the points' positions to resolve the issue(s) at the source. Does such a tool exist and/or is there a way to highlight, select, and/or mark these points somehow in base C4D? See the following attached images for a simple example illustrating the desired operation(s): Image 1: Object with misaligned points after a symmetry operation followed by Connect Objects (Points mode with all points highlighted, to make them more visible.) Image 2: Result of an Optimize operation with all points highlighted (the top two points have been welded by Optimize into a single point) Desired result (after Undo of Optimize): Don't weld nearby points, just mark them: Image 3: Points marked by highlighting them in the composite object Image 4: Points marked by placing red circle shaped camera facing Null objects at the points' locations in order to mark their positions, without affecting the points themselves - a far better approach that is independent of the temporary composite object which can then be deleted, leaving behind just the point marking Null objects.
  10. I like your solution, but instead of zero scaling, I would: 1. Connect the two distant (i.e., non-connected) points of the new logically "extruded" highlighted edges. 2. Delete the central most extruded point, which would in-turn delete the two thin right triangles that were created by the cut from the prior step, leaving behind a properly aligned (with respect to the outer points that were move-copied) as well as co-linear set of "extruded" edges. I prefer the above, because with "scaling to zero," you often have to fiddle with the pivot point location offset (i.e., the -100% to 100% range adjustment) of the modeling axis used to scale. This is necessary when the middle of the points is not your alignment target. Then you are forced to go through the onerous steps of adjusting the scaling axis offset percentage to align it to the point or co-linear/co-planar points that form the "anchor(s)" of your scaling operation - the ones you want the remaining points to align to. I find this process to be a major PITA. Of course my method only works for multiple anchor points if they are already co-linear (or co-planar, as long as this "virtual plane on which they lie" is strictly perpendicular to the axis of scaling). A side-goal of my approach is to not change the position(s) of the anchor point(s) in any way, only to align other points with them. I find I often need to create temporary additional geometry, call it scaffolding, that provides beneficial and much desired points and/or edges to snap to (e.g., for cutting, moving, etc.). This extra geometry, and splines/shapes as well, works much better than Cinema's simplistic Guides and Null objects, for snapping targets. - Michael
  11. Wouldn't be too hard to write a script to do this
  12. It would be nice if they updated their release notes when they push out an update! Or, is Twitter the new place for release notes?
  13. News of a R25.115 is appearing. Was there a silent update and/or hotfix beyond R25.113 (i.e., SP1) and if so, what changed? It's not on Maxon's site, anywhere.
  14. Epic list of fixes, indeed! About damn time, too, given the number of bugs in this release.
×
×
  • Create New...

Copyright Core 4D © 2021 Powered by Invision Community