• MatrixToHPB Negative values

    python r20
    4
    0 Votes
    4 Posts
    1k Views
    r_giganteR
    Hi @owen, thanks for following up. As @m_adam has already pointed out there's actually no difference in the values defininig a matrix representing a rotation on -30, -390, 330 or 690 on a certain axis. The lifesafer in this case is to use the already mentioned GetOptimalAngle which actually provides you with the HPB vector that would minimize the rotation given the previous HPB and the current HPB. For the sake of completeness let's assume that at frame 0 H = 0 whilst at frame 1 H = -5. Running the following code just returns the "expected" HPB vector def main(): # set the lastHPB to the previous frame value (in this case zero) lastHPB = c4d.Vector(0,0,0) # retrieve the current rotation order rotOrder = op.GetRotationOrder() # convert from matrix to HPB representation currentHPB = c4d.utils.MatrixToHPB(op.GetMg(), rotOrder) # get the optimal HPB vector optimalHPB = c4d.utils.GetOptimalAngle(lastHPB, currentHPB, rotOrder) print optimalHPB Now using this strategy and knowing the HPB of a clone at the previous frame, you are able to obtain a meaningful HPB representing of the matrix describing the rotation at the current frame of a certain clone (or object). Best, Riccardo
  • Viewport playback thread

    2
    0 Votes
    2 Posts
    580 Views
    M
    Hi @WickedP, actually all the drawing stuff is done in the main thread. In the next topic, you can find all the information about how the scene playback could be done in python https://developers.maxon.net/forum/topic/10292/13784_playpause-control-via-python/3. If you have any question please let me know, and be more specific about what you try to achieve. Cheers, Maxime.
  • Static Text Font/Size in Description Resource

    3
    1
    0 Votes
    3 Posts
    883 Views
    O
    Hello @m_adam, I wish you and all the members of the forum together with the staff Happy New Year. And thank you for your answer. It helped me a lot.
  • Confusing ToolData content

    python c++ r19 r20
    20
    1 Votes
    20 Posts
    5k Views
    S
    Congrats on the new forum! it is very informative About time
  • SetBool RDATA_RENDERENGINE

    2
    0 Votes
    2 Posts
    530 Views
    M
    Hi Daniel, Thanks a lot, you are indeed right, SimpleMaterial.cpp has been fixed. Cheers, Maxime.
  • How to copy (and remove) userdata via python ?

    r19 python
    8
    0 Votes
    8 Posts
    2k Views
    M
    Seems I also forget to mention but please use About Tags and Tagging like so you can mark a specific version.
  • 0 Votes
    3 Posts
    1k Views
    eZioPanE
    Hi, @m_adam Thank you for your kindness and the inspiring answer! It's a GREAT Christmas present for me! So sorry asking XPresso related questions in this forum. The problem I faced is a little bit complex than this: I need sample Effectors' total Output Strengths in the position from a Polygon Object's Points, and store the result into a Vertex Color Map attached for further use. This problem bothers me for months, and I didn't find any clue until your post. I have never think about using Python Node with global variable in XPresso Network can keep the data as I need and do the magic! From the bottom of my heart, I want to say THANK YOU. The answer you give not only solve this problem, but also inspire me re-thinking of ObjectList Node and Python Node, and how these nodes executed in an XPresso Network. Just let me THANK YOU AGAIN! Best wishes for you to have a wonderful holiday!
  • Slow Python in R20 ?

    r19 r20 python
    4
    0 Votes
    4 Posts
    1k Views
    M
    After a reboot, I'm able to reproduce it again... I will create a bug report and more testing after Season's Greetings & SDK Team Vacation. Anyway thanks a lot. Cheers, Maxime.
  • Running process in background (threading)

    5
    0 Votes
    5 Posts
    1k Views
    F
    Hi again, It turns out that the issue was not related to Cinema 4d itself, but was caused by how I handled the connection to the 3rd party library. You can mark this as solved. Best regards /Filip
  • User Interface Description

    10
    0 Votes
    10 Posts
    2k Views
    O
    @s_bach Thank you so much for your help!
  • How to make menus pop up in a certain distance of the mouse?

    python r20 windows
    3
    0 Votes
    3 Posts
    1k Views
    M
    @m_adam wow! I did what you say,it works!! you are so cool!! thank you very much!!! yeah!!
  • MAXON_OPERATOR_MOVE_ASSIGNMENT and virtual destructor

    3
    0 Votes
    3 Posts
    740 Views
    C4DSC
    I am still a C++ dinosaur, and particularly not experienced with the move operator. So thanks for pointing out the need for the manually written assignment operator. Together with the already implemented move constructor I had, I now more clearly see the point.
  • SendModelingCommand \ LOOP_TOOL

    2
    0 Votes
    2 Posts
    581 Views
    r_giganteR
    Hi arsen, I'm sorry but the bug is not fixed yet. I've pinged the group responsible for handling it and as soon as I received news about the fixing time frame, I'll report here. Best, Riccardo
  • maxon::String in classic API

    6
    1
    0 Votes
    6 Posts
    1k Views
    C4DSC
    Thanks for the confirmation SNHookClass still using the legacy String.
  • Quit Cinema after SAVE_AFTER message

    r20 python
    3
    0 Votes
    3 Posts
    689 Views
    B
    Hi @m_adam! Thank you for your response. I looked for a way to mark the post as a question while submitting, I didn't think to look at the submitted post again for that option. I'll remember next time. KillDocument and Exiting were never ment to run consecutively, they were just two things I wanted to try for different scenarios. I should have clarified that. StopAllThreads() unfortunately wasn't enough, but adding in a small message plugin to trigger the exit from the CoreMessage() did the trick. I'm now changing a global boolean for the CoreMessage() to look for. Is that what you had in mind? Thank you for your help, everything works now. I'll make sure and try and find the "mark as solved" button on my way out Edit: I can't actually mark your comment as the solution, only this one...
  • Add Dotted Line to Labels

    4
    1
    0 Votes
    4 Posts
    840 Views
    M
    Hi @Ogers, first of all, welcome in the plugincafe community. Before to start I would like to point you to: -Q&A New Functionality. -About Tags and Tagging. I've setup your topic correctly. As you can see, and already figured in this topic what you are seeing in your picture is a DescriptionCustomGui especially how the CustomGui display each DescId entry. That means it's not a text, but a parameter ID. Which can be dragged into the console / animated for example. There is no proper way to creates theses without using DescriptionCustomGui. With that's said I will answer to your other topic. Cheers, Maxime.
  • Where to put my .dylib ?

    Moved c++
    11
    0 Votes
    11 Posts
    6k Views
    r_giganteR
    Hi ascorbin, I see the point. Well in this case I strongly suggest you to google around for install_name_tooland see (e.g. here) how helpful it can be with regard to dylib handling. What I suggest is: make a backup copy of your dylib execute in a terminal install_name_tool -id "@loader_path/res/libs/osx/<yourlib>.dylib" <path to your c4d plugin>/res/libs/osx/<yourlib>.dylib rebuild your plugin to be sure that the referenced .dylib informs your plugins about the install name update This should update the install name of your dylib, inform your plugin about the path to look for and, in the end, have your plugin properly loading the dynamic library. Let me know, Riccardo.
  • R20 Startup script location - python_init.py

    python r20
    9
    1 Votes
    9 Posts
    4k Views
    T
    @m_adam said in R20 Startup script location - python_init.py: This will be fixed within a future release. Well, that's a relief then. Good to know. Thank you Maxime for the clarification. Kind regards, Tom
  • GeDialog TabGroup

    r19 c++
    6
    0 Votes
    6 Posts
    1k Views
    M
    Hi @C4DS, Unfortunately, there are no messages for clicking on this button since Tab Group was really not designed to handle to this kind of cases. With that's said, I've thought of BFM_GETCURSORINFO, maybe you can find a way to get the coordinate of theses button, and if they are drawn. Then you can define a member variable for enabling/disabling the addition of a new Tab according to the mouse position. Cheers, Maxime.
  • Field Layer Description Names

    c++ r20 macos
    5
    0 Votes
    5 Posts
    1k Views
    D
    Thank you so much, that's exactly what I needed! Dan