Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Register
    • Register
    • Login
    1. Maxon Developers Forum
    2. d_schmidt
    D
    • Profile
    • Following 0
    • Followers 0
    • Topics 38
    • Posts 137
    • Best 2
    • Controversial 0
    • Groups 0

    d_schmidt

    @d_schmidt

    2
    Reputation
    147
    Profile views
    137
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    d_schmidt Unfollow Follow

    Best posts made by d_schmidt

    • RE: GetRealSpline() not returning a result

      Hi, Maxime, I'm trying to be able to browse through every point, the tangents of those points, and the segments they belong to. It seems like a LineObject wouldn't help me get the tangents or the spline point locations so I think I would need the actual SplineObject.

      I want to output a SplineObject, taking in the input splines points, tangents, and segments to be able modify it and return something different.

      I hope that clears it up,
      Dan

      posted in Cinema 4D SDK
      D
      d_schmidt
    • RE: SendModelingCommand causing Memory Leak

      I hope this helps!

      Upon adding Optimize Object to the scene and immediately closing Cinema causes a series of memory leaks.

      Reproduce:

      1. Open Cinema 4D.
      2. Add an Optimize Object.
      3. Close Cinema 4D.

      Result:

      1. There are resulting memory leaks.

      Versions:
      NOK 2024.0.2

      posted in Cinema 4D SDK
      D
      d_schmidt

    Latest posts made by d_schmidt

    • RE: Reading from the Project Settings

      Hi @ferdinand,

      Sorry about missing that post. This exactly solved my problem, thanks.

      Dam

      posted in Cinema 4D SDK
      D
      d_schmidt
    • Reading from the Project Settings

      Hello, I was looking for a way to read some of the Project Settings of a document but I can't figure out the method. I know how to read some of them, the SDK example shown below, but how do I access the latter tabs? I'm struggling to read from the Simulation sub tabs specifically.

        // This example switches the statue of the "Use Generators" setting.
       
        const BaseContainer data = doc->GetData(DOCUMENTSETTINGS::GENERAL);
        const Bool useGenerators = data.GetBool(DOCUMENT_USEGENERATORS);
       
        // set new settings
        BaseContainer settings;
        settings.SetBool(DOCUMENT_USEGENERATORS, !useGenerators);
        doc->SetData(DOCUMENTSETTINGS::GENERAL, settings);
      

      Screenshot 2025-04-04 at 11.40.28 AM.png

      Thanks for the help,
      Dan

      posted in Cinema 4D SDK c++ 2024
      D
      d_schmidt
    • RE: Volume Builder Type Fog Should it be solid?

      Hi @m_adam ,

      Thank you so much! That was exactly what I needed.

      Dan

      posted in Cinema 4D SDK
      D
      d_schmidt
    • Volume Builder Type Fog Should it be solid?

      Hello, I'm using a Volume Builder, with Volume Type Fog and I'm getting some results I didn't expect with the location of the voxels. Would it be expected that the entire Volume would be filled and 'solid' with Fog mode?

      It's not the most elegant test case, but it's the one I can trim down.

      //Get the volume from the volume builder object.
      maxon::Volume       volume = volumeObject->GetVolume();
      maxon::GridIteratorRef<maxon::Float32, maxon::ITERATORTYPE::ON> iterator = maxon::GridIteratorRef<maxon::Float32, maxon::ITERATORTYPE::ON>::Create() iferr_return;
      iterator.Init(volume)iferr_return;
      maxon::Matrix transform = volume.GetGridTransform();
      
      BaseDocument* doc = GetActiveDocument();
      BaseObject* sphere = BaseObject::Alloc(Osphere);
      BaseContainer* con = sphere->GetDataInstance();
      con->SetFloat(PRIM_SPHERE_RAD, 5);
      
      for (; iterator.IsNotAtEnd(); iterator.StepNext())
      {
                      const maxon::IntVector32 coord = iterator66.GetCoords();
                      BaseObject* clone = static_cast<BaseObject*>( sphere->GetClone(COPYFLAGS::NONE, nullptr));
                      clone->SetAbsPos(transform* Vector(coord));
                      doc->InsertObject(clone, nullptr, nullptr);
      }
      

      This code will create a sphere at the location of each active voxel. This was the easiest way I could think of showing the active voxels.

      If I use a cube underneath a Volume Builder and delete away some of the spheres then the hollow inside, which I didn't think would happen with Fog mode.
      Screenshot 2025-02-27 at 4.36.23 PM.png
      Screenshot with the spheres deleted to show the hollow interior.

      Dan

      posted in Cinema 4D SDK c++ 2024
      D
      d_schmidt
    • RE: New Condition Naming in Attribute Manager

      Thank you so much! I couldn't ask for a more thorough response.

      Dan

      posted in Cinema 4D SDK
      D
      d_schmidt
    • New Condition Naming in Attribute Manager

      Hello, I noticed there seemed to be a new 'name' feature with the Condition object.
      Screenshot 2025-01-14 at 4.23.52 PM.png
      Is it possible to make use of it in a plugin?

      'Condition' is just the object's Name, but I can't figure out how 'distance' is set.

      Dan

      posted in Cinema 4D SDK c++ r25
      D
      d_schmidt
    • RE: Volume Builder GetInputObject returns something different?

      Thanks for the info!

      Dan

      posted in Bugs
      D
      d_schmidt
    • RE: Volume Builder GetInputObject returns something different?

      Hi @i_mazlov

      Sorry about the lack of clarity in my post, I managed to trim the case down to something pretty narrow:

      The hierarchy:
      b6f976e8-566f-4c91-a74e-e7b4f763a43f-image.png

      The code:

        BaseObject* firstChild = op->GetDown();
          if(firstChild != nullptr)
          {
              if(firstChild->GetType() == Ovolumebuilder)
              {
                  VolumeBuilder* volumeBuilder = static_cast<VolumeBuilder*>(firstChild);
                  if(volumeBuilder!=nullptr)
                  {
                      Int32 volumeBuilderInputCount = volumeBuilder->GetInputObjectCount(false);
                      BaseObject* volumeChildInput = volumeBuilder->GetDown();
                      
                      if(volumeBuilderInputCount > 0 && volumeChildInput != nullptr)
                      {
                          BaseObject* volumeInputObject = volumeBuilder->GetInputObject(0);
                          if(volumeChildInput == volumeInputObject)
                          {
                              ApplicationOutput("The two inputs are the same.");
                          }
                          else
                          {
                              ApplicationOutput("The two inputs are not the same.");
                          }
                          
                      }
                  }
              }
          }
      

      In most cases it seems like the two objects equal each other, e.g. if the cube is moved. If an Undo is performed after moving the cube, so the Undo returns the cube's position back, then they do not equal each other.

      This is the same circumstance where I'm not able to retrieve the cache from the GetInputObject() object. Would this be expected behavior in this circumstance?

      Dan

      posted in Bugs
      D
      d_schmidt
    • Volume Builder GetInputObject returns something different?

      Hello, I have a circumstance pretty far in my code where I'm using a VolumeBuilder.

      If I have a cube as a child of a VolumeBuilder when I use GetInputObject to retrieve that cube, I'm not able to get the cache from that cube sometimes with GetCache().

      In the same circumstance, if I use GetDown() from the VolumeBuilder, to retrieve that cube, I am able to get the cache from that cube same cube with GetCache().

      Do GetInputObject() and GetDown() behave differently in this circumstance?

      Thanks for the help!
      Dan

      posted in Bugs 2024 c++ macos
      D
      d_schmidt
    • RE: 3d Connector problem after 2024.4 update

      Hi Ferdinand,

      So to be clear, the only thing that can be done with ItemTreeData is adding new objects to it?

      Thanks,
      Dan

      posted in Bugs
      D
      d_schmidt