﻿<?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=%E5%88%A9%E7%94%A8%E8%80%85%3ATon%2FDepsgraph_2012</id>
	<title>利用者:Ton/Depsgraph 2012 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ATon%2FDepsgraph_2012"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Ton/Depsgraph_2012&amp;action=history"/>
	<updated>2026-06-08T13:37:30Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Ton/Depsgraph_2012&amp;diff=132779&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Ton/Depsgraph_2012&amp;diff=132779&amp;oldid=prev"/>
		<updated>2018-06-28T20:44:28Z</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日 (木) 20:44時点における版&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=%E5%88%A9%E7%94%A8%E8%80%85:Ton/Depsgraph_2012&amp;diff=132778&amp;oldid=prev</id>
		<title>wiki&gt;Klutz: /* Depsgraph 2012 */ it's -&gt; its</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Ton/Depsgraph_2012&amp;diff=132778&amp;oldid=prev"/>
		<updated>2012-11-05T13:10:10Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Depsgraph 2012: &lt;/span&gt; it&amp;#039;s -&amp;gt; its&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Depsgraph 2012 =&lt;br /&gt;
&lt;br /&gt;
Everything in Blender that's animated goes via the 'dependency graph' code, which handles correct order of evaluation and ensures everything is only calculated once.&lt;br /&gt;
&lt;br /&gt;
This 'depsgraph' is a design from 2005, based on solving the stupid &amp;quot;just calculate everything twice&amp;quot; in Blender 2.3x and older. It has served its purpose for 2.4x, but for the 2.5x target it's definitely too weak.&lt;br /&gt;
&lt;br /&gt;
A new depsgraph system should be built, and it can be made with spectacular specifications. To achieve that I propose to do this in distinct steps - or as different projects.&lt;br /&gt;
&lt;br /&gt;
Great article about the depsgraph state to read too:&lt;br /&gt;
http://wiki.blender.org/index.php/User:Aligorith/Depsgraph_Limitations&lt;br /&gt;
&lt;br /&gt;
== 1) New depsgraph system ==&lt;br /&gt;
&lt;br /&gt;
Improvements in the current implementation can at least offer these features:&lt;br /&gt;
&lt;br /&gt;
* Dependencies for all (ID) data types in Blender.&lt;br /&gt;
* Allow finer granularity of dependencies.&lt;br /&gt;
* Allow visibility changes (like layers) to be updated efficiently&lt;br /&gt;
* Ensure it's not only working for Objects, but also for example for Image-dependencies.&lt;br /&gt;
* Ensure the design is ready for the other steps!&lt;br /&gt;
&lt;br /&gt;
A promising approach to check is to create a general &amp;quot;scene graph&amp;quot; API, allowing every Blender Scene to have such a graph, each Group to have such a graph, each Armature to have one, and so on.&lt;br /&gt;
&lt;br /&gt;
Graphs can be designed to be local only (not re-used), so they can be used to store the actual display data too. For some properties (Object derivedmesh) this could already be done.&lt;br /&gt;
&lt;br /&gt;
For sake of simplicity I would consider to have despgraph nodes be ID blocks only. It might give limitations (object -&amp;gt; bone -&amp;gt; object deps), but having each ID be calculated as black box has a lot of benefits with current architecture of Blender data. &lt;br /&gt;
Granularity can also be achieved by cycle-solvers (detect the cycle exceptions and just call these twice).&lt;br /&gt;
&lt;br /&gt;
== 2) Threaded update evaluation ==&lt;br /&gt;
&lt;br /&gt;
* Allow more complex animation systems to be played back in real time&lt;br /&gt;
&lt;br /&gt;
Once a graph has been constructed, a graph-evaluator should be able to extract 'update' jobs that allow to be handed over to threads.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, modifier/derivedmesh code has to be checked on carefully.&lt;br /&gt;
&lt;br /&gt;
== 3) Render (preview) jobs ==&lt;br /&gt;
&lt;br /&gt;
* Renders and previews (composites) should be 100% stable and reliable to use.&lt;br /&gt;
&lt;br /&gt;
The thread issue for render (preview) jobs might be solvable with a locking mechanism in the depsgraph... simply forbidding (or entering wait() ) until a thread releases the data. Solvable via the depsgraph API...&lt;br /&gt;
&lt;br /&gt;
== 4) Point and data caches (Alembic) ==&lt;br /&gt;
&lt;br /&gt;
* Animation system should use realtime calculated or stored caches transparently.&lt;br /&gt;
&lt;br /&gt;
Character animators would require this as well, this allows disk-streaming of massive character animations, without problems with duplication and instancing etc.&lt;br /&gt;
&lt;br /&gt;
Also for physics sim Alembic is worth looking into. The depsgraph API could handle such caches or switching to recalulcate them well.&lt;br /&gt;
&lt;br /&gt;
== 5) Multi-time, Duplicators &amp;amp; Proxy levels ==&lt;br /&gt;
&lt;br /&gt;
* Allow scenes or Blender screens/windows to on different times&lt;br /&gt;
* Allow groups to be instanced, and used on different times or with different actions.&lt;br /&gt;
* Allow library linked or instanced data with local overrides in general&lt;br /&gt;
&lt;br /&gt;
Here we get into the most complicated feature to solve. This would require a quite elaborate cleanup first of Blender's internal data system (handling ID blocks, file read/write).&lt;br /&gt;
&lt;br /&gt;
One approach to solve this is to create a &amp;quot;IDType&amp;quot; struct, storing all ID methods as being in use for this; including file read/write, duplication, relinking, deletion, pointer magic, etc. Same goes for the ListBase in &amp;quot;Main&amp;quot;, which can get faster searches builtin (old proposal from Jiri).&lt;br /&gt;
&lt;br /&gt;
For example; reading a NodeTree with all data from disk + getting pointers corrected is similar to copying a NodeTree.&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
Code work for 1-2-3-4 is within reason feasible to plan. The last target (5) is the most complex, very interesting... dangerously exciting, risky but with huge benefits. :)&lt;br /&gt;
&lt;br /&gt;
Excluded in above notes is new animation systems, like integration of Bullet rigid body... not sure how dynamic dependencies influence design.&lt;/div&gt;</summary>
		<author><name>wiki&gt;Klutz</name></author>
		
	</entry>
</feed>