• 0 Votes
    2 Posts
    526 Views
    M
    Hi thanks for the report, python should never crash, so it's going to be fixed in the next release. In any case the port should be a valid a port, but an exception should be raised when None is passed. Cheers, Maxime
  • How should I download Cineware sdk?

    Cineware SDK windows s22
    2
    0 Votes
    2 Posts
    1k Views
    M
    Thanks for the report, I've fixed the link. Cheers, Maxime.
  • Call "Set Deformed Mesh" on Weight Tag

    Cinema 4D SDK 2024 python windows
    2
    0 Votes
    2 Posts
    737 Views
    M
    Hi you need to use call button def apply_deformed_mesh(meshes): """ Apply 'Set Deformed Mesh' on all meshes with weight tags. """ for obj in meshes: weight_tag = obj.GetTag(c4d.Tweights) if weight_tag: bc = weight_tag.GetDataInstance() # Set the button to 'Set Deformed Mesh' bc.SetInt32(c4d.ID_CA_WEIGHT_TAG_SET_BUTTON, c4d.ID_CA_WEIGHT_TAG_SET_DEFORMED_MESH) c4d.CallButton(weight_tag, c4d.ID_CA_WEIGHT_TAG_SET_BUTTON) # Update the scene c4d.EventAdd() Cheers, Maxime.
  • 0 Votes
    3 Posts
    869 Views
    fwilleke80F
    Ok, thanks!
  • How to Get cloner data in C++

    Cinema 4D SDK s26 c++ windows
    2
    1
    0 Votes
    2 Posts
    673 Views
    M
    Hi you can find in read_modata_color_r16.py a Python example doing exactly that. To retrieve the position instead of retrieving the MODATA_COLOR your need to retrieve MODATA_MATRIX. There is no difference for doing it in C++. Cheers, Maxime.
  • Spline to UV map... is this even possible?

    Cinema 4D SDK python 2024 windows
    3
    0 Votes
    3 Posts
    1k Views
    justinleducJ
    Hey @m_adam, I never thanked you for your very helpful and thorough reply, so allow me to do so now: thank you very much! Your reply ended up being extremely useful, as it guided me in implementing the KD-Tree within my Python script, as well as helping me convert the Barycentric coordinates to UV coordinates. So, for that, once again; thank you! Now that this is implemented, I am faced with a challenge: it appears that the precision of the drawing of the Spline greatly depends on the subdivision/triangulation level of my geometry (for example, the Sphere in my parent message). In other words, if the geometry whose UV map I am drawing the shape of my Spline onto is very low-poly, the drawing of said Spline will be incredibly imprecise. It seems like the precision increases as I increase the amount of polygons on the geometry. Just curiously, without necessarily pasting my code here, I was wondering if - at the top of your head - this behavior was to be expected? Does this mean that, with the KD-Tree and Barycentric conversion method, I would never be able to programmatically draw a perfectly round circle Spline on a Plane object that, despite having a perfect UV map, only has 2 polygons? I can work around those constraints, but it'd be great to know if the current imprecision of my drawing approach isn't caused by something else. Thanks!
  • 0 Votes
    5 Posts
    1k Views
    joel_motionJ
    @i_mazlov Thank you very much for your response! I am not sure how long it would have taken me to figure out the "prefsPlugin: c4d.BasePlugin =... " part without your help. This is the code I wrote, which works exactly how I wanted it to (and now I have the script mapped to a hotkey). import c4d def main(): prefsPlugin: c4d.BasePlugin = c4d.plugins.FindPlugin(c4d.PREFS_NAVIGATION, c4d.PLUGINTYPE_PREFS) navigationValue: int = prefsPlugin[c4d.PREF_NAVIGATION_CAMERA] if navigationValue == 3: prefsPlugin[c4d.PREF_NAVIGATION_CAMERA] = c4d.PREF_NAVIGATION_CAMERA_CAM else: prefsPlugin[c4d.PREF_NAVIGATION_CAMERA] = c4d.PREF_NAVIGATION_CAMERA_CUR if __name__=='__main__': main() Thanks again!
  • Sub-frame document time

    Cinema 4D SDK c++ windows
    3
    0 Votes
    3 Posts
    737 Views
    WickedPW
    Is there any way to get around the apparent hard-coded maximum frame rate limit? WP.
  • 0 Votes
    2 Posts
    606 Views
    ferdinandF
    Hello @Christian-0, Thank you for reaching out to us. I am a bit confused by your question. A soft body simulation is characterized by the fact that it gives up the idea of a geometry transform with governs a geometry as usually applied in computer graphics. In the end this means that the transform of the object (BaseObject.GetMg) will not change but the points will and with it the bounding box of an object. Below you see a soft body cylinder falling. Its transform, the axis, never changes, but the bound box does. Animated are here the points, not the object, hence the term soft body. bbox.mp4 In the API you can get the bounding box values with BaseObject.GetMp and BaseObject.GetRad. When you want a transform, a matrix for that, you would have to compute that yourself. The matrix manual dissects how to construct matrices. Cheers, Ferdinand
  • Access to the coordinate manager.

    Cinema 4D SDK 2023 python windows
    3
    1
    0 Votes
    3 Posts
    830 Views
    S
    @ferdinand Thank you very much for the expanded object.
  • 0 Votes
    3 Posts
    937 Views
    H
    Hi @ferdinand, thanks for taking the time to clarify that Okay, I see. So one can view this "behavoiur" as intended since it is the result of the math behind how the circle spline is calculated? Still I wonder why the circle spline primitive with 1 intermediate point, i.e. with four control points doesn't appear like the n-side spline with 8 sides? Wouldn't it be "cleaner" that way? Regading the true values - I am well aware that the repr of c4d.Vector rounds in the GUI. It was only that those values were quite off compared to the values of the points of the n-side spline. That's why my initial question arose. Interesting and good to know that rotating points via sine and cosine is slow and no good option. Thank you for that insight. May I ask why that is? I mean why is c4d.utils.MatrixRotZ better? What does that function do differently in terms of performance? In the end it has to do the math as well, does it not? Sorry for constantly asking all this stupid questions. It is only that I want to understand these things thoroughly. Thanks for your time, Sebastian
  • 0 Votes
    4 Posts
    902 Views
    K
    I found the AddPorts() Method,Sorry I missed it before. from typing import Optional import c4d import maxon doc: c4d.documents.BaseDocument # The active document op: Optional[c4d.BaseObject] # The active object, None if unselected def main() -> None: material = doc.GetActiveMaterial() nodeMaterial = material.GetNodeMaterialReference() graph: maxon.GraphModelInterface = nodeMaterial.GetGraph(c4d.GetActiveNodeSpaceId()) with graph.BeginTransaction() as transaction: layered_node = graph.AddChild(maxon.Id(),"com.chaos.vray_node.texlayeredmax") layers = layered_node.GetInputs().FindChild("com.chaos.vray_node.texlayeredmax.texture_layers") #The Layers portbundle layers.AddPorts(2, 1) #Add layers transaction.Commit() #Layer in Layers portbundle layers_list = [] layers.GetChildren(layers_list,maxon.NODE_KIND.INPORT) #Textureports and BlendMode_ports in Layers portbundle layers_texport_list = [tport for port in layers_list if (tport := port.FindChild("com.chaos.vray.portbundle.texture_layer.texture"))] layers_mode_list = [mport for port in layers_list if (mport := port.FindChild("com.chaos.vray.portbundle.texture_layer.blend_mode"))] print(layered_node) print(layers) print(layers_list) print(layers_texport_list) print(layers_mode_list) if __name__ == '__main__': main()
  • 0 Votes
    6 Posts
    3k Views
    i_mazlovI
    Hi @gsmetzer, please have a look at the related thread (How to get the bounding box for the whole scene) where your issue was explained in details by @ferdinand @ferdinand said in How to get the bounding box for the whole scene: a BaseObject will also not include its descendants in its bounding box computation So, one must carry out such computations oneself Cheers, Ilia
  • Why won't my python generator update? R2024

    Cinema 4D SDK python s26 windows
    5
    0 Votes
    5 Posts
    1k Views
    S
    @baca @ferdinand Thank you both. It was the fact that the user data was not collected in the main function. Silly I didn't catch that. It's working fine now.
  • Icons reuse

    Cinema 4D SDK windows 2024 python
    3
    0 Votes
    3 Posts
    731 Views
    DunhouD
    Hi @ferdinand , Thanks for your explain, I would convert the svg files to png then regist them for a temp solution, and wait the attribute valid in python. Thanks always for your awesome works. Cheers~ DunHou
  • 0 Votes
    3 Posts
    832 Views
    H
    Hi @ferdinand, ah okay I see. Some part of me already suspected it could be a bug. Thanks for taking the time to look into it. Regarding the scope of question. You are absolutely right. And while I understand that it can make answering branching questions hard, it is sometimes not that easy to split things up. But all good, no offense taken. One last thing, I know you guys are not here to develop solutions or come up with algorithms. Still, I was wondering if a possible solution could be to move the selected points to a custom vector position and afterwards simply send an "Optimize" modeling command? Cheers, Sebastian
  • Running commanline application with Python

    Moved General Talk 2023 python macos windows
    15
    0 Votes
    15 Posts
    4k Views
    ferdinandF
    One last thing: Have you tried using LICENSEMODEL::MAXONAPP as an alternative login method? ::MAXONACCOUNT is being deprecated as I said, and I do not quite remember why we chose it here nonetheless. User support surely can help you with the details here.
  • 0 Votes
    5 Posts
    1k Views
    i_mazlovI
    Yes, you found the thread about point selection just right!
  • Legacy Code still a thing?

    Cinema 4D SDK 2024 c++ windows
    11
    0 Votes
    11 Posts
    2k Views
    Y
    Oh sorry, thank you. I totally missed that.