Navigation

    • Register
    • Login
        No matches found
    • Search
    1. Home
    2. wilsonic
    W

    wilsonic

    @wilsonic

    0
    Reputation
    1
    Posts
    4
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online

    • Profile
    • More
      • Following
      • Followers
      • Topics
      • Posts
      • Best
      • Groups
    wilsonic Follow

    Best posts made by wilsonic

    This user hasn't posted anything yet.

    Latest posts made by wilsonic

    How to move multiple objects axis to origin?

    Hello, I am a python novice, trying to find a way to move the axis of hundreds objects to the origin. I found a great script by Arttu Rautio https://aturtur.com/ar_scripts-for-cinema-4d/, specifically this one https://github.com/aturtur/cinema4d-scripts/blob/master/AR_Scripts_1.0.15/AR_AxisToCenter.py which will move the axis on many objects to their center and am wondering if it's possible to modify this to move the axis to the origin instead.

    This fuction appears to be doing the axis shifting in that script.

    def CenterAxis(obj): # Center object's axis
        doc = c4d.documents.GetActiveDocument() # Get active Cinema 4D document
        points = [] # Initialize empty list
        pointCount = obj.GetPointCount() # Get object's point count
        for i in range(0, pointCount): # Loop through points
            points.append(obj.GetPoint(i)) # Add point to points list
        matrix = obj.GetMg() # Get object's global matrix
        center = obj.GetMp() # Get Object's bounding box center in local space
        axis = obj.GetAbsPos() # Get object's absolute position
        difference = axis - (axis + center) # Calculate difference
        if difference != c4d.Vector(0): # If there is a difference
            for i in range(pointCount): # Loop through object's points
                obj.SetPoint(i, points[i] + difference) # Set new point position
            obj.Message(c4d.MSG_UPDATE) # Send update message
            obj.SetMg(c4d.Matrix((matrix * center),
                matrix.v1, matrix.v2, matrix.v3)) # Set new matrix for the object
    

    I'm wondering if it's as simple as setting the center matrix to a fixed point (0,0,0) but I'm not sure how to format those coordinates as a matrix. (or if it's even this small a change or would need a larger re-write)

    I've also tried using the script log while performing the action manually but the cooridinate manager does not produce log entries that I can see unfortunately.

    Does anyone have any insight on how this might be achieved?

    Thanks

    posted in Cinema 4D SDK •