Jump to content


Regular Member
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by C4DS

  1. I don't know about the native UV tools within Cinema 4D, as I only use my own created UV plugin tools (Seamilar and Easy UV). With the introduction of the ReferencePoint gadget in Seamilar (Cinema 4D R20 only for now) one can easily center UV polygons and islands onto the canvas. A demonstration of the possible options is available here: https://www.c4dcafe.com/ipb/forums/topic/95805-seamilar-the-sequel/?do=findComment&comment=694942 In your case it would be as simple as selecting the new numeric transform tool, select the center ReferencePoint, enter 0.5 in the U and V fields of the Position, and press the Apply button. If you wouldn't mind to upload your object, I can make a quick demonstration video how the workflow would be.
  2. C4DS


    This topic didn't die just yet. Problem is that potential subjects are encountered less and less. I would have assumed that by now someone would have at least posted an image of a road sign mentioning the Tower Bridge ... or any bridge for that matter. There sure should be some in the UK, no? Maybe in the US then? The next picture of a road sign represents a selection tool we're all familiar with ... and no, it's not the loop selection tool ;-)
  3. The numeric transform is currently in beta, awaiting feedback. As mentioned earlier I had been working on adding a new feature to the plugin, which would allow stacking of UV islands. With this addition users are able to stack multiple islands. When manipulating a stack each of its island would inherit the UV manipulation. It also allows to free up UV canvas space by stacking islands that require the same texture space. For now, only the "single-shot" island stacking is being demonstrated, where you stack selected islands by a command. In future, a more elaborate stacking-tool will be made available, where you will be able to interactively stack islands. This will allow to specify the stacking with specific polygon-matching requirement (later more about this). While the stacking-tool allows for a more specific solution, in case of complex island structure, I preferred to have the automatic stacking-command worked out first. This required quite some design and implementation, but also allows for a quick-and-dirty stacking of multiple islands ... which I assume would be mostly used.
  4. These features are not available to the native Cinema 4D UV tools. Because of this and the lack of other features, I created my own UV editor available in two of my plugins: Seamilar and EasyUV. In both plugins you can define the number of grid lines, as well as their color. Background color is also adjustable. In Seamilar you have the additional option to use different display modes. One of them is Texture Display mode, which allows to also work in pixel unit, instead of the default UV unit. And you're able to define the "opacity" of the image. https://toolspixels.be/seamilar/ https://toolspixels.be/easyuv/
  5. What exactly is the issue you have with the Pyramid's UVs? From the screenshot I don't see any issue.
  6. Made a quick demonstration video of the new feature in action. While the feature originated from the demand to have a pixel accurate positioning and sizing option, I figured I could as well implement a full transform tool supporting both UV unit as pixel units (except for scale and rotate, obviously). The new tool is still work in progress, but should be available in a next update.
  7. Since last post I was working on a new feature, which I am very excited about. More about that later. It took time to work out a design and required quite some supporting math to get the desired solution. Implementation is now mostly done, just not finalized yet. However, I was recently contacted for a particular request, and have put the feature on the shelf (only for a while) as I assume this new request to be more useful on a long term. Up till now Seamilar's manipulation of UVs (via points, edges, polygons, islands) was mainly focused on using interactive tools. Soon the new numeric transform tool will be available, allowing to manipulate points, edges, polygons and islands via precise values. For this to work the way I intended I had to construct a custom GUI component: ReferencePoint. With this you will be able to move, rotate, scale, position, size items from the four corners of a bounding box, or its center. For rotating, scaling and sizing you will also be able to perform the transformation actions on the whole set of selected items, or on the different islands separately. For moving and positioning you will be able to specify any corner of the UV canvas as origin. And when in Texture Display mode you will have the option to specify the transformation action in UV coordinates, or in pixel values. The icon for this new tool needs some attention, as this one is just a placeholder during the work-in-progress. I am currently finalizing the implementation of this tool. Followed with some more testing days ahead, before releasing an update. (Maybe some porting to pre-R20 version of Seamilar, depending the interest) After the release of the update I'll continue working on the other feature.
  8. Sorry to intrude, and definitely not wanting to interfere the great lessons you provide us regarding good topology. My hat off to you for that. However, I have noticed a few times now you using the term "convex quad", while you'd supposedly want to refer to these as concave quads. Convex (angle less than 180) is actually what we try to achieve, while concave (angle of 180 or higher) is what we want to avoid. It confused me the first time you mentioned it, but from your explanation I knew what you meant.
  9. There is an order form with all the details.
  10. Apologies for misreading your question. My original interpretation of your problem was that you needed two layered materials, where the topo texture had some alpha or transparency. Hence the suggestion to use layered textures instead of layered geometry. However, I now understand that you need separate materials on the front and back of the geometry and therefore had duplicated the geometry, assigning the back material on the bottom geometry and the front topo material on the top geometry. This front/back information was only brought later into the discussion. And as such, my original suggestion for using layered material is actually of no use.
  11. I meant using a layer shader or fusion shader or similar, where you combine the different textures, and apply that as a single material to the single geometry
  12. Having geometry close to each other will always provide for issues. But why layer the geometry as you are trying to do? Why not simply layer the materials on a single geometry?
  13. Thanks for the kind words. Most of the plugins are written in C++, which I already was using before jumping into C4D, back in 2005. While Python is only used for "simple" plugins, or scripts, or for prototyping. And this language I only learned quite recently, as I still need to look up functions in the Python documentation, each time I am adding features or updating functionality to a plugin or script. As mentioned, STOS was the main reason I went for the Atari ST. So, software development was already a passion of mine, back then. I remember having purchased an (expensive) assembler only to be able to write a single extension for STOS. As such, I was then already writing plugins. STOS could only handle 15 sprites in total. I needed much more, so wrote a "shape" extension which mimicked a sprite. Didn't take long to write, as such the expensive assembler was only used a very short amount of time. With the "shape" extension available I could basically do all I wanted in every application I wrote since. That assembler was the best investment ever, and the most expensive software purchase I had ever made ... till I stumbled upon "trueSpace" somewhere halfway the 90s. Funny thing is that I also wrote plugins for that application ... "scitameniK" being my most popular one. As the name implies, it was an extension for Inverse Kinematics.
  14. I had used Reaper a while, some years ago, for editing voice-over takes and effects, but never really managed to stick to it for music making. As far as I remember I seemed to have had issues with Kontakt and other virtual instruments, and was too impatient to get used to its workflow. Went for Tracktion instead. As for the plugins I am developing, most except the latest one are listed in a blog here at the Cafe, as well as having their own threads in the plugin section of the forum. Right ... the Atari STE. Could indeed have as much as 4MB if I remember correctly. Never could justify the "upgrade" from my STFM, which I purchased having 512KB and had it upgraded to 1024KB. A few years later purchased a PC 80486 with ... 16MB. Still far away from the 16GB which are common now. Still, I much more enjoyed the Atari than any PC I have had in all these years. Shame for the lousy graphic resolution, back then.
  15. I remember the 512KB and 1MB versions, (STFM versions), but cannot recall the 2MB. Was that the STE, the TT, ...?
  16. I agree. Have purchased Cubase Elements 8 a few years ago. Never really used it to its full potential, as starting the application seemed to take forever. Each time I wanted to do a quick session, the amount of time to wait loading the application just killed the inspiration. Have since tried Reaper, and am now focused on Waveform (formerly know as Tracktion). Both of them launch in a blink of an eye. But, unfortunately, other things are keeping me away from music making ... and even from doing 3D. A decade ago it used to be building and flying model airplanes, but since a few years my attention is now fully turned to plugin development.
  17. Have been an ST(FM) user as well, but more for the graphics than for midi ... especially STOS. To be honest, prices have come down and storage has increased, both exponentially. But what about the fun and excitement? Maybe it's nostalgia, or old age, but the 80s-90s seemed to be more exciting computer-wise (as a teen) than today (as an old fart), even if things were barely affordable then ... And the music was better.
  18. I have been a Gold Support member for a long time. Just noticed I don't longer seem to carry the Gold Support tag. Which means it probably ran out. Haven't received a notification to renew, or anything similar. Still, as far as I remember, being a Gold Support member I still had ads popping up on every page, and between the first and seconds posts of each thread. As such, I am wondering, before renewing my membership, what would Gold Support entitle in the sense of ads free experience? Or would it mean an additional fee would be required on top of the Gold Support purchase? Just wondering.
  19. Both you and @RobertL should have received the updated version. I have added some documentation regarding the script, and even added a script example. Looking forward to both your feedback, before providing the update to other customers. As for Seamilar, PolyGnome (as well as Dials), they're currently still 15% off, and EasyUV is at 40% discount ... for the whole month of February.
  20. Yes, every output port requires it's variable to be defined as global. I was a little too fast with my response for the second script, and I omitted the 'global', as well as forgetting the namespace 'c4d' in front of the rotation attribute. As such, the working script should be # construct a matrix from Position and Rotation, # input ports are Position and Rotation, output port is NewMatrix import c4d def main(): global NewMatrix NewMatrix = c4d.utils.HPBToMatrix(Rotation, order=c4d.ROTATIONORDER_DEFAULT) NewMatrix.off = Position As you figured out by now, I hadn't tested the script before submitting ;-)
  21. As mentioned, name your input and output ports accordingly. These port names are used in the scripts. If these don't match you'll get the error you describe.
  22. OK, got it. As I thought, the input ports are "Position" and "Rotation", both of type vector, while the output port is "NewMatrix" of type matrix. So, when replacing the COFFEE node with a Python Node you should create the appropriate input and output ports. With the first scripts the input and output ports are floating point values. By default, when you create a Python node in Xpresso you get 2 input ports ... of type Real (or floating point), and an output port, again of type Real. What you need to do for the second script is create a Python node, remove the input and output ports, and create new ones of the appropriate types. I don't think you can change the port type (at least you could not in the past), therefore you need to remove the existing ports and create new ones. Name them accordingly and you'll be set!
  23. You could google this and find a better answer, but I'll try my best at explaining it. The "->" you see in COFFEE and other programming languages (C++), is a way to access an object's member or function. In the second script there is this "InMatrix" variable which refers to a matrix object, an instance of a matrix class. Be careful with "object". In this context it isn't a Cinema 4D mesh object or null object, nor deformer, nor generator, ... The object here is a "container" which holds some data and functions (members and methods in C++). The matrix class has a GetClone function which allows to create a copy of itself and pass it along. InMatrix->GetClone() thus means that from our InMatrix object, we call its internal function called GetClone, and the resulting copy is assigned to NewMatrix, a new object instantiated from the matrix class. EDIT: Well, for completeness. In C++ (other languages probably as well, but I am most familiar with C++) to access members and methods of an instantiated class or structure one can use "->" or sometimes just a dot. myObject->member myObject->method() - or - myOtherObject.member myOtherObject.method() It all depends how the object was instantiated, as a pointer or not. But I guess this all is getting beyond the scope of this forum.
  24. I can't seem to find the second COFFEE node you are referring to. All I see are 7 COFFEE nodes with the first script.
  25. Here is the first # Get the "shortest" angle between two vectors, provided via input ports Input1 and Input2, # The result is sent to output port Output1 import c4d def main(): global Output1 Output1 = c4d.utils.GetOptimalAngle(Input1, Input2, c4d.ROTATIONORDER_DEFAULT) And the second one As far as I can see this script is meant to create a matrix from a rotation and position, provided via input ports called Rotation and Position. The output port is then NewMatrix. I am not 100% sure this is what it is supposed to be, but without the actual scene file where the Xpresso and nodes can be investigated from, it is hard to tell. So, I'll go with my first assumption. The code for this is then # construct a matrix from Position and Rotation, # input ports are Position and Rotation, output prt is NewMatrix import c4d def main(): NewMatrix = c4d.utils.HPBToMatrix(Rotation, order=ROTATIONORDER_DEFAULT) NewMatrix.off = Position



C4D Cafe is the largest CINEMA 4D community. We provide facilities for discussion, showcasing and learning our favorite software :) Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, get your own private messenger, post status updates, manage your profile and much more. If you need to find solution to your problem or otherwise ask for help, Cafe is the right place.
  • Create New...