Blender: Recursive Duplicator for Objects and Scales in Local Axes

A very simple duplicator that recursively duplicates objects, scales and moves them in local axes.

 

Introduction

  • A very simple duplicator that recursively duplicates objects, scales and moves them in local axes.
  • The transformation can be applied to any object. It will move and scale on the y-axis.
  • Parameters can be used to set scale and offset on other axes.
  • Script works on local axes!

Python code

import bpy
import mathutils

duplicates = 1

scale_on_x = 1
scale_on_y = 1.045
scale_on_z = 1

move_on_x = 0
move_on_y = 0
move_on_z = -0.036


def simple_duplicate(dobject, limit, actual):
    copy_of_dobject = dobject.copy()
    copy_of_dobject.data = copy_of_dobject.data.copy()
    
    bpy.context.collection.objects.link(copy_of_dobject)
    bpy.context.view_layer.objects.active = copy_of_dobject
    
    inv = copy_of_dobject.matrix_world.copy()
    inv.invert()

    # move
    copy_of_dobject.location += mathutils.Vector(
        (move_on_x, move_on_y, move_on_z)
    ) @ inv
    
    copy_of_dobject.scale = (
            copy_of_dobject.scale[0] * scale_on_x, 
            copy_of_dobject.scale[1] * scale_on_y, 
            copy_of_dobject.scale[2] * scale_on_z
        )
    
    actual += 1 
    if actual <= limit:
       print("call") 
       simple_duplicate(copy_of_dobject, limit, actual)

# execute
simple_duplicate(bpy.context.active_object, duplicates, 1)


Thanks to DevDave for his great guide, all credit goes to his effort. you can also read the original guide from Steam Community. enjoy the game.

Related Posts:

Leave a Comment