Blender KitOps

By telleropnul, August 8, 2020

Thank you masterxeon1001, proxe, Chipp and team!
https://www.youtube.com/user/masterxeon1001/videos

Today we will adding this to the mix:

Did I tell you Blender is free and open source?  This is not a beginner tutorial.  This is just for me to keep my sanity.

 

c0’s KPack

Contains 7 inserts.
c0 KPack.zip

 

Quick notes

Q: “Why can’t I select individual objects from KitOps Inserts in Outliner?”
A: “You need to make sure Auto select is OFF in order to select part of an INSERT (in Outliner)”

Q: “How to specify bool order for KitOps Inserts?”
A: “Bool order is currently based on alphabetical object names. Just name your objects A-Z to match bool order.  Best to do naming and parenting of object in the Factory.”

Q: “Parenting is lost as soon as you enter the FACTORY (in some cases.)”
A: “Best to do naming and parenting of object in the Factory.”

Don’t forget to [G] [Z] [-1] and set the origin of the main object (or all objects…) to [0,0,0].
If parenting an animated object, select Parent [Keep Transform].

Using default ‘Create Insert’ with focus on naming and parenting:

Fail safe way of creating an insert:
1. [G] [Z] [-1] early on.
2. Origin to (0,0,0) early on.
3. Hops / BC as normal.

Here’s the thing. Don’t mess with parenting, leave everything as-is. Don’t matter if it falls apart if you move something.

4. Apply scale / rotation on everything.
5. Unhide all (including cutters).
6. Hide what you don’t want in your KitOps insert (either in Outliner or by selecting and pressing [H])
7. Select All in viewport.
8. Hit ‘Create Insert’
Now all you need to do is:
– Select your main object in viewport and tick “main”
– Select each cutter in viewport and set to correct type.
– Select each object and name them A to Z to enforce boolean order.
– Select everything ensuring main object is selected last.
– [CTRL-P] Parent (Keep Transform)
This will parent everything to the main object. Main object has no drivers and no Transformation constraints with origin in (0,0,0). Is always safe to use as parent.

This works every time most of the time :slight_smile: No headaches. Just can’t have radial array empties.

 

i0001

i0001a.blend
i0001b.blend
i0001c.blend

 

i0002

i0002a.blend
i0002b.blend
i0002c.blend

Tip: Cycle the Bevel Profiles for the two Vertex Group Bevels used on the cylinder:
Untick KitOps “Auto Select”, select object, [Q], [B], [SHIFT+P]

 

i0003

i0003a.blend

 

i0004

i0004a.blend
i0004b.blend

Note: KitOps currently does not preserve Empty orientation, even if parented correctly to main object of the insert.  Simply apply the Radial Array modifier and remove Empty.

 

i0005

i0005a.blend

Note: Driver variables with a data path / origin in “Scene” will end up with a value of “Scene.001” when placed as an insert due to how KitOps imports by attaching the .blend file as an additional Scene.  Either manually update or run this:

1
2
3
4
5
6
7
for obj in bpy.data.objects:
    if hasattr(obj.animation_data, 'drivers'):
        for drv in obj.animation_data.drivers:
            for variable in drv.driver.variables:
                for target in variable.targets:
                    if target.id.type == 'SCENE':
                        target.id = bpy.context.scene

 

i0006

i0006.blend

Transformation constraint.  Use Local space.  Translate [pick object] Z rotation min /max to this object’s Z movement min/max.

 

i0007

i0007a.blend
i0007b.blend
i0007c.blend