Get the latest Blender, older versions, or experimental builds.
Stay up-to-date with the new features in the latest Blender releases.
Access production assets and knowledge from the open movies.
Documentation on the usage and features in Blender.
Latest development updates, by Blender developers.
Guidelines, release notes and development docs.
A platform to collect and share results of the Blender Benchmark.
The yearly event that brings the community together.
Support core development with a monthly contribution.
Perform a single donation with more payment options available.
# ############################################################
# Importing - Same For All Render Layer Tests
import unittest
import os
import sys
from view_layer_common import *
# Testing
class UnitTesting(ViewLayerTesting):
def test_shared_layer_collections_copy_full(self):
"""
See if scene copying 'FULL_COPY' is keeping collections visibility
and selectability.
import bpy
scene = bpy.context.scene
enabled_lookup = [True, False, False, True]
enabled_lookup_sub = [False, True, False]
selectable_lookup = [True, True, False, False]
selectable_lookup_sub = [False, True, False, True]
new_collections = []
# clean everything
for layer in scene.view_layers:
while layer.collections:
layer.collections.unlink(layer.collections[0])
# create new collections
for i in range(4):
collection = scene.master_collection.collections.new(str(i))
new_collections.append(collection)
for j in range(3):
sub_collection = collection.collections.new("{0}:{1}".format(i, j))
# link to the original scene
for i, collection in enumerate(new_collections):
layer.collections.link(collection)
self.assertEqual(layer.collections[-1], layer.collections[i])
layer.collections[i].enabled = enabled_lookup[i]
layer.collections[i].selectable = selectable_lookup[i]
for j, sub_collection in enumerate(layer.collections[i].collections):
sub_collection.enabled = enabled_lookup_sub[j]
sub_collection.selectable = selectable_lookup_sub[j]
# copy scene
bpy.ops.scene.new(type='FULL_COPY')
new_scene = bpy.context.scene
self.assertNotEqual(scene, new_scene)
# update depsgrah
for view_layer in scene.view_layers:
view_layer.update() # update depsgraph
# compare scenes
for h, layer in enumerate(scene.view_layers):
new_layer = new_scene.view_layers[h]
for i, collection in enumerate(layer.collections):
new_collection = new_layer.collections[i]
self.assertEqual(collection.enabled, new_collection.enabled)
self.assertEqual(collection.selectable, new_collection.selectable)
new_sub_collection = new_collection.collections[j]
self.assertEqual(sub_collection.enabled, new_sub_collection.enabled)
self.assertEqual(sub_collection.selectable, new_sub_collection.selectable)
# Main - Same For All Render Layer Tests
if __name__ == '__main__':
UnitTesting._extra_arguments = setup_extra_arguments(__file__)
unittest.main()