﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3A2.8%2FSource%2Foverrides%2Fmanifesto</id>
	<title>Dev:2.8/Source/overrides/manifesto - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3A2.8%2FSource%2Foverrides%2Fmanifesto"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:2.8/Source/overrides/manifesto&amp;action=history"/>
	<updated>2026-05-06T06:03:50Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:2.8/Source/overrides/manifesto&amp;diff=153193&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:2.8/Source/overrides/manifesto&amp;diff=153193&amp;oldid=prev"/>
		<updated>2018-06-28T21:22:27Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 21:22時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:2.8/Source/overrides/manifesto&amp;diff=153192&amp;oldid=prev</id>
		<title>wiki&gt;Dfelinto: moved Dev:2.8/Source/overrides to Dev:2.8/Source/overrides/manifesto: keeping the entry point for multiple override related documents</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:2.8/Source/overrides/manifesto&amp;diff=153192&amp;oldid=prev"/>
		<updated>2017-11-16T12:20:36Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/Dev:2.8/Source/overrides&quot; title=&quot;Dev:2.8/Source/overrides&quot;&gt;Dev:2.8/Source/overrides&lt;/a&gt; to &lt;a href=&quot;/Dev:2.8/Source/overrides/manifesto&quot; title=&quot;Dev:2.8/Source/overrides/manifesto&quot;&gt;Dev:2.8/Source/overrides/manifesto&lt;/a&gt;: keeping the entry point for multiple override related documents&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= The Override Manifesto =&lt;br /&gt;
&lt;br /&gt;
Proposal for code design of overrides in Blender 2.8.&lt;br /&gt;
&lt;br /&gt;
== Forewords ==&lt;br /&gt;
Blender 2.8 is implementing different forms of overrides.&lt;br /&gt;
&lt;br /&gt;
Static overrides take proxies to a new level, allowing users to treat linked data as if they were local. Workspace render settings overrides make each workspace unique yet sharing common settings. Layer Collection render settings overrides go a setup further and let the user define how you want to see or render a collection of objects altogether. And finally, Layer Collection data overrides make the best of the new depsgraph allowing any data in blender to redefined in a per layer, per collection basis.&lt;br /&gt;
&lt;br /&gt;
It sounds confusing, right? But what if I told you that most of those overrides are the exactly same thing? They are ID Property overrides. The exception that validates the rule are the static overrides.&lt;br /&gt;
&lt;br /&gt;
== Static Overrides and Proxies ==&lt;br /&gt;
&lt;br /&gt;
In Blender 2.7x proxies were limited to armatures, and could only have local pose data. In Blender 2.8 any Datablock (Mesh, Armature, ...) will be able to have local properties. And as far as the editors are concerned, the linked in data with its modifications will be treated the same as any local.&lt;br /&gt;
&lt;br /&gt;
Which means that an object that has static overrides will be treated as a regular object. And will benefit just as well of the following IDProperty overrides described throughout this document.&lt;br /&gt;
&lt;br /&gt;
== ID Property ==&lt;br /&gt;
&lt;br /&gt;
Blender IDProperty data type allows us to join RNA data nested in groups, with merging and syncing functionalities. It’s what we use for Cycles (e.g., bpy.context.object.cycles).&lt;br /&gt;
&lt;br /&gt;
This is as well what we use for keymaps. The Keymap is a particular interesting application of IDProperty. The IDProperty are only created when set, and are nested under an IDProperty group:&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8_Overrides-IDProperties.png|531px|thumb|center|“Swap Left / Right” is the only real IDProperty created]]&lt;br /&gt;
&lt;br /&gt;
As you can see, we already have overrides working in Blender 2.7x, we are just shy of calling them as such.&lt;br /&gt;
&lt;br /&gt;
== Data Storage ==&lt;br /&gt;
&lt;br /&gt;
For simplicity, I will refer to IDProperty of IDP_GROUP type as IDPropery Group.&lt;br /&gt;
&lt;br /&gt;
The idea is to store for each datablock a single IDProperty Group, and have a nested IDProperty Group for each engine.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8_Overrides_IDProperties_Datablock.png|590px]]&lt;br /&gt;
&lt;br /&gt;
Layer Collections will have a single IDProperty Group, and have a nested IDProperty Group for each render engine (e.g., Cycles, Eevee), and for every practical mode (e.g., object mode, edit mesh mode, …).&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8_Overrides_IDProperties_LayerCollection.png|617px]]&lt;br /&gt;
&lt;br /&gt;
== Engine Settings ==&lt;br /&gt;
&lt;br /&gt;
We have three kind of engines defined render settings:&lt;br /&gt;
* Global settings&lt;br /&gt;
* Workspace settings&lt;br /&gt;
* Layer collection settings&lt;br /&gt;
&lt;br /&gt;
=== Global Settings ===&lt;br /&gt;
''For example: Cycles compute device, floor grid spacing, PBR “model”, grid distance.''&lt;br /&gt;
&lt;br /&gt;
The global settings are engine-related properties that are not overridden. They are set up once, and shared across the entire project. They may be per scene or user preference, it doesn’t matter.&lt;br /&gt;
&lt;br /&gt;
=== Workspace Settings ===&lt;br /&gt;
''For example: layer, engine, number of samples, integrator, floor reflection, brush settings.''&lt;br /&gt;
&lt;br /&gt;
The Workspace settings allow a workspace to customize how it will render the data. That includes having a different layer than the scene (F12), a different engine and other settings such as specific object mode properties.&lt;br /&gt;
&lt;br /&gt;
Like the Keymap image above, we can expose them all in the User Interface, and the user set only the settings that she wants to override. By using IDProperty we benefit from merging syncing and storing only the set properties.&lt;br /&gt;
&lt;br /&gt;
''Note: Although this is barely covered in the workspaces documentation, this design allows a user to have her own “workspaces.blend” file, re-usable for different projects, with pre-defined render settings for specific workflows.''&lt;br /&gt;
&lt;br /&gt;
=== Layer Collection Settings ===&lt;br /&gt;
''Example: matcap, show normals, Cycles ray visibility.''&lt;br /&gt;
&lt;br /&gt;
Finally we have the Layer collection settings. Those are settings that can be defined per collection in the layer level (i.e., scene → layer → collection).&lt;br /&gt;
&lt;br /&gt;
At any given time a user should be able to see two set of engine settings: the active mode engine settings, and the active (render) engine settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8_Overrides-ClaySettings.png|350px|thumb|center|Clay Engine Render Settings, and Object Mode Settings]]&lt;br /&gt;
&lt;br /&gt;
Just like the KeyMap, we set only the properties we want to change, while the others are left grayed out. Unlike the keymaps, however, we can’t rely on the operator “default” values as a fallback when a property is not set.&lt;br /&gt;
&lt;br /&gt;
In this case we need the properties to be set in the scene level, potentially overridden by workspaces, and then potentially overridden by a Layer Collection.&lt;br /&gt;
&lt;br /&gt;
Also, a collection that is defining a render setting this way should be able to communicate this in the outliner. Perhaps having those overrides listed there, (or even directly editable there), followed by the data overrides.&lt;br /&gt;
&lt;br /&gt;
''Note: The override system is particular important for Layer Collections because of its tree nature. Nested and sibling collections can override the same settings, and the objects in those collections get assigned a final flushed evaluated settings.''&lt;br /&gt;
&lt;br /&gt;
== Evaluation ==&lt;br /&gt;
&lt;br /&gt;
The override chain needs to have a strict evaluation design, clearly communicated to users.&lt;br /&gt;
&lt;br /&gt;
The Layer Collection render settings is evaluated from Scene →Workspace →Layer Collections.&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8-Overrides-Evaluation_Workspace.png|500px|thumb|center|Render settings override chain]]&lt;br /&gt;
&lt;br /&gt;
The datablock evaluation goes from Datablock →Static Override →Layer Collection&lt;br /&gt;
&lt;br /&gt;
[[Image:Dev-Blender_2.8-Overrides-Evaluation_Proxy.png|500px|thumb|center|Datablock override chain]]&lt;br /&gt;
&lt;br /&gt;
Depsgraph centralizes the layer collection to objects data flushing, and will handle both override chain evaluations.&lt;/div&gt;</summary>
		<author><name>wiki&gt;Dfelinto</name></author>
		
	</entry>
</feed>