c4d.utils.GetBBox() Returns Odd Results



  • On 22/03/2018 at 17:19, xxxxxxxx wrote:

    According to the documentation, c4d.utils.GetBBox() should return the Center and Radius of the object hierarchy.

    However, I'm getting unuseable results. To test:

    1. Create a cube
    2. Make it editable
    3. Move the cube's axis to it's base
    4. Add an Expression Tag to the Cube with this expression:

      
    import c4d   
      
    def main() :   
        obj = op.GetObject()   
        mp, rad = c4d.utils.GetBBox(obj, c4d.Matrix())   
        print "(mp: %s, rad: %s)" % (mp, rad)   
    

    The output is:
    (mp: Vector(0, -100, 0), rad: Vector(100, 100, 100))

    Just because the axis has moved doesn't mean the global center point should move.

    Expected:
    (mp: Vector(0, 0, 0), rad: Vector(100, 100, 100))

    Am I misunderstanding how to use this method? If not, any workarounds for making it usable?



  • On 25/03/2018 at 12:35, xxxxxxxx wrote:

    Hi Donovan, thanks for writing us.

    With reference to your question, in order to get the proper results I'd suggest to use:

      
    def main() :  
      obj = op.GetObject()  
      mpTrf = c4d.Matrix()  
      mpTrf.off = obj.GetMp()  
      mp, rad = c4d.utils.GetBBox(obj, mpTrf)  
      print "(mp: %s, rad: %s)" % (mp, rad)  
    

    By using this approach you're properly providing the method with a transformation matrix whose position is the correct one for the bounding box. Moreover it should be noted that passing a different transformation matrix which could might represent a different coordinate system you'd be able to obtain the bbox information in that coordinate system.

    Hope it helps.

    Best, Riccardo


Log in to reply