• Drag&Drop in Editor window

    r20 python
    3
    0 Votes
    3 Posts
    576 Views
    P
    Yes - dragging session only occurs in a 2D space - I thought so. Thanks.
  • Transform mouse coordinates to c4d coordinates

    r20 python
    5
    0 Votes
    5 Posts
    1k Views
    P
    Thanks for the answer. I just started with a command plugin. New requirements emerged and yes, perhaps I now change over to a tool plugin.
  • How to output BaseBitmap with ShaderData plugin

    python
    2
    0 Votes
    2 Posts
    612 Views
    r_giganteR
    Hi Merkvilson, thanks for reaching out us. If the final intent is to simply get BaseBitmapinformation to be returned by your shader, rather than sampling a Xbitmap shader I suggest instead to simply query the color information by using BaseBitmap::GetPixel and eventually apply color space transformation. def Output(self, sh, cd) : x = int(cd.p.x * self.bitmap.GetBw()) y = int(cd.p.y * self.bitmap.GetBh()) col = self.bitmap.GetPixel(x, y) return c4d.Vector(float(col[0]/256.0), float(col[1]/256.0), float(col[2]/256.0)) Best, Riccardo
  • 0 Votes
    4 Posts
    927 Views
    a_blockA
    Hi, I'm glad you found something working for you. I just want to mention, this way of using the deform cache directly will only work for very specific setups, for arbitrary object configurations you will most likely need to iterate through the cache. So, I think, it's worth to give those manuals another read. Also Maxime has posted some snippets in Getting a polygonal version of an animated mesh, which might be useful for you. Cheers, Andreas
  • Getting a polygonal version of an animated mesh

    Moved
    3
    0 Votes
    3 Posts
    778 Views
    R
    Well, I do have a loop but I just pasted the code that would, hopefully, perform the calculation. And I did tried the GetDeformCache approach, but my mistake was, in fact the cloning of the object. Thank you so much for the code, Adam.
  • Memory leak after plugin migration R16 -> R20

    14
    1 Votes
    14 Posts
    3k Views
    r_giganteR
    Thanks a lot Daniel for following up here. Glad to listen that the update actually fixed it, although even on 20.030 I had no better luck to reproduce. Best, Riccardo
  • GetActiveObjects(flags)

    python r20
    3
    0 Votes
    3 Posts
    616 Views
    P
    @s_bach Ok, Thanks.
  • Team Render Client and plugins

    r20
    2
    0 Votes
    2 Posts
    699 Views
    C4DSC
    What the customer failed to mention was that the Team Render Client he used is on the same physical machine as his main Cinema 4D. Since both share the same plugins folder, the plugins were obviously installed manually for the main Cinema 4D, and thus also available for the local Team Render Client. Case closed.
  • Mac build fails, PC build OK

    8
    0 Votes
    8 Posts
    2k Views
    C4DSC
    @a_block No need for apologies. I thought the bearded guy had something to do with it ... Hence the reason I posted the message again. Luckily, JIT before the easter bunny was to blame.
  • Setting `coordinate system` using `MCOMMAND_MIRROR`

    python r20
    3
    1
    0 Votes
    3 Posts
    1k Views
    K
    Hi @m_adam Thank you for your reply. It works perfectly!
  • This topic is deleted!

    10
    0 Votes
    10 Posts
    395 Views
  • The plugin ID '000' collides with another plugin ID in 'aaa'.

    r20 python windows
    4
    0 Votes
    4 Posts
    1k Views
    a_blockA
    Hi, good we got you going It is not wrong per se to use multiple plugin directories. Actually Cinema 4D R20 was specifically designed to have multiple ones. You just need to make sure not to have duplicate plugins in these directories. Cheers, Andreas
  • Refresh Editor after killDocument or SetActiveDocument

    python windows r20
    3
    0 Votes
    3 Posts
    723 Views
    B
    Hi Sebastian! Turns out my issues are two seperate, but equally self inflicted problems Inserting and activating works as expected, I am blocking the update with some custom UI stuff so I will have to find a solution for that. Calling EventAdd() in the closeEvent of the UI doesn't do anything. Is there another way to force Cinema to update everything? Killing the document not only doesn't update, but actually crashes Cinema, because I am trying to kill the document from within a callback that is reacting to MSG_DOCUMENTINFO_TYPE_LOAD. I am doing some more involved environment management and sometimes I have to close a document after loading. I have a workaround that will have to do for now. In the callback I change the document path to a string I can then look for in EVMSG_CHANGE. When I detect my string there, I can then kill the document. It's not very elegant and if anyone has a better solution I would be very happy, but otherwise consider this problem solved
  • Python Scripting-Help with GeDialog.AddComboBox add child option

    Moved python
    12
    1
    0 Votes
    12 Posts
    3k Views
    M
    Please do not delete topics once they are resolved, this topic may help other people that have the same issue. Instead, use the Q&A functionality to mark a topic as solved. Cheers, Maxime.
  • iferr warn_unused_result missed

    6
    0 Votes
    6 Posts
    1k Views
    S
    Hello, the Source Processor only checks for coding style violations and creates auxiliary code. It cannot check for valid C++ syntax (because C++ is quite an complex language). Coming back to the issue of return values, only the compiler can check that at compile time. And, yes, unfortunately Visual Studio and Xcode behave differently. best wishes, Sebastian
  • Render from picture viewer programatically

    r20 python windows
    2
    0 Votes
    2 Posts
    606 Views
    r_giganteR
    Hi mafster, thanks for reaching out us. With regard to accessing images being available in the Picture Viewer, I'm sorry to confirm that there is no PictureViewer-related classes/functions exposed in the API. This is valid for both C++ and Python API. Best, Riccardo
  • How to get to the str-value in a UserData Integer Cycle

    Moved python
    4
    0 Votes
    4 Posts
    1k Views
    S
    @stevejlv I found a workaround: the value part in the value;string Cycle option list does not have to be 0,1,2 etc. So I can give them the exact value as the string part (as long as they are int) and get the value I want the old fashioned way: [c4d.ID_USERDATA,1]
  • Cinema4D Application crash R19 in Release Mode

    Moved r19 c++
    3
    0 Votes
    3 Posts
    2k Views
    A
    @Riccardo Thank you very much for your reply Riccardo! Yes of course you are right - modifying the c4d sdk is a bad way. I just did this to see what happens. I will take a close look to the manual you have mentionend and will review the memory handling in my code. Best regards Andi
  • 0 Votes
    2 Posts
    1k Views
    S
    Hello, you cannot create a Material in the main() function of a Python Generator object. The main() function of the Python Generator object defines a cache of "virtual" BaseObjects which will appear in the scene. Materials cannot be created this way. A material must be inserted into the BaseDocument. This must only happen from the main thread, typically in reaction to some user interaction. One way of doing this would be to add a user data button to your Generator. Then your user could simply press that button to create the needed materials. Pressing the button can be detected by implementing the message() function. This could look like this: def main(): # search for material mat = doc.SearchMaterial("Generator Material") if mat is None: return None # create object cube = c4d.BaseObject(c4d.Ocube) # apply material ttag = cube.MakeTag(c4d.Ttexture) ttag[c4d.TEXTURETAG_MATERIAL] = mat return cube def message(id, data): if id == c4d.MSG_DESCRIPTION_COMMAND: buttonId = data['id'] # check button ID if buttonId[1].id == 1: # create material and insert it into the host document c4d.StopAllThreads() material = c4d.Material() material.SetName("Generator Material") material[c4d.MATERIAL_COLOR_COLOR] = c4d.Vector(1,0,0) doc.InsertMaterial(material, None) c4d.EventAdd() Also, please use the Q&A system. best wishes, Sebastian
  • Python: Key Error while initializing GUI, Dictionary, self

    5
    0 Votes
    5 Posts
    1k Views
    M
    thanks solved: self.data = {'sphere_size': 15, 'extension_ratio': 1, 'extend_vector': False} kind regards