Python C4D 笔记2 - 物体信息

  1. 创建一个球体,初始绝对坐标设置为(10,20,30)
class First:
    def __init__(self, object_id):
        self.object_id = object_id
    
    
    def create(self):
        obj = c4d.BaseObject(self.object_id)
        pos = obj.GetAbsPos() # 获取中心点绝对位置坐标, 有返回值,类型为Vector 默认(0,0,0)
        
        pos_Vec = c4d.Vector(10,20,30)  # 初始化一个Vector坐标
        obj.SetAbsPos(pos_Vec)   # 设置obj中心点绝对位置坐标,只能传入一个Vector类型值,无返回值。
    
        doc.InsertObject(obj)
        c4d.EventAdd()
         
ins = First(5160)
ins.create()

在这里插入图片描述

同理, 大小(X,Y,Z)和旋转(H,P,B)都类似的函数调用
BaseObject.GetAbsScale()
BaseObject.SetAbsScale()
BaseObject.GetAbsRot()
BaseObject.SetAbsRot()

得到obj矩阵信息 包括 物体、大小和旋转,函数:
BaseObject.GetMl() : Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (10, 20, 30))

  1. 将一个obj的矩阵,Copy to另外一个obj上
class First:
    def __init__(self, object_id,x,y,z):
        self.object_id = object_id
        self.x = x
        self.y = y
        self.z = z    
    
    def create(self):
        obj = c4d.BaseObject(self.object_id)
               
        pos_Vec = c4d.Vector(self.x, self.y, self.z)  # 初始化一个Vector坐标
        obj.SetAbsPos(pos_Vec)   # 设置obj中心点绝对位置坐标,只能传入一个Vector类型值,无返回值。
            
        doc.InsertObject(obj)
        c4d.EventAdd()        
        return obj         

ins_1 = First(5160, 10, 20, 30)
ins_2 = First(5159, 0, 0, 0)
aa = ins_1.create()
bb = ins_2.create()
print('aa = ',aa.GetMl())
print('bb = ',bb.GetMl())

aa.CopyMatrixTo(bb)      //==Copy the matrix to another object.==
print('bb_new = ',bb.GetMl())

结果:
('aa = ', Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (10, 20, 30)))
('bb = ', Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (0, 0, 0)))
('bb_new = ', Matrix(v1: (1, 0, 0); v2: (0, 1, 0); v3: (0, 0, 1); off: (10, 20, 30)))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值