﻿<?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%3ARef%2FRelease_Notes%2F2.40%2FCode</id>
	<title>Dev:Ref/Release Notes/2.40/Code - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ARef%2FRelease_Notes%2F2.40%2FCode"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Release_Notes/2.40/Code&amp;action=history"/>
	<updated>2026-07-27T11:31:51Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Ref/Release_Notes/2.40/Code&amp;diff=151557&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Release_Notes/2.40/Code&amp;diff=151557&amp;oldid=prev"/>
		<updated>2018-06-28T21:17:11Z</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:17時点における版&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:Ref/Release_Notes/2.40/Code&amp;diff=151556&amp;oldid=prev</id>
		<title>2016年5月12日 (木) 15:58にwiki&gt;Blendifyによる</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Ref/Release_Notes/2.40/Code&amp;diff=151556&amp;oldid=prev"/>
		<updated>2016-05-12T15:58:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Code Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=2.40-Source code-Armatures notes /&amp;gt;&lt;br /&gt;
==Armature and Animation Coder Notes==&lt;br /&gt;
&lt;br /&gt;
  Aim was to get a total refresh of the animation system. This&lt;br /&gt;
  is needed because;&lt;br /&gt;
  - we need to upgrade it with 21st century features&lt;br /&gt;
  - current code is spaghetti/hack combo, and hides good design&lt;br /&gt;
  - it should become lag-free with using dependency graphs&lt;br /&gt;
  &lt;br /&gt;
  A full log, with complete code API/structure/design explanation&lt;br /&gt;
  will follow, that's a load of work... so here below the list with&lt;br /&gt;
  hot changes;&lt;br /&gt;
  &lt;br /&gt;
  - The entire object update system (matrices, geometry) is now&lt;br /&gt;
    centralized. Calls to where_is_object and makeDispList are&lt;br /&gt;
    forbidden, instead we tag objects 'changed' and let the&lt;br /&gt;
    depgraph code sort it out&lt;br /&gt;
  - Removed all old &amp;quot;Ika&amp;quot; code&lt;br /&gt;
  - Depgraph is aware of all relationships, including meta balls,&lt;br /&gt;
    constraints, bevelcurve, and so on.&lt;br /&gt;
  - Made depgraph aware of relation types and layers, to do smart&lt;br /&gt;
    flushing of 'changed' events. Nothing gets calculated too often!&lt;br /&gt;
  - Transform uses depgraph to detect changes&lt;br /&gt;
  - On frame-advance, depgraph flushes animated changes&lt;br /&gt;
  &lt;br /&gt;
  Armatures;&lt;br /&gt;
  &lt;br /&gt;
  Almost all armature related code has been fully built from scratch.&lt;br /&gt;
  It now reveils the original design much better, with a very clean&lt;br /&gt;
  implementation, lag free without even calculating each Bone more than&lt;br /&gt;
  once. Result is quite a speedup yes!&lt;br /&gt;
&lt;br /&gt;
  The huge commit is caused by cleaning up globals from struct Global. Many&lt;br /&gt;
  variables were unused or just not needed anymore. Did that to move the ugly&lt;br /&gt;
  G.zbuf to where it belongs, in the View3D space struct. :)&lt;br /&gt;
&lt;br /&gt;
  What changed in IK lib:&lt;br /&gt;
  &lt;br /&gt;
  Fully restructured, with components now as follows:&lt;br /&gt;
    - IK_Solver: C &amp;lt;=&amp;gt; C++ interface&lt;br /&gt;
    - IK_QSegment: base class for bone/segment with 0&lt;br /&gt;
      to 3 DOF&lt;br /&gt;
    - IK_QTask: base class for a task (currently there's&lt;br /&gt;
      a position and a rotation task)&lt;br /&gt;
    - IK_QJacobian: the Jacobian matrix, with SVD&lt;br /&gt;
      decomposition, damping, etc&lt;br /&gt;
    - IK_QJacobianSolver: the iterative solver&lt;br /&gt;
  &lt;br /&gt;
  The exponential map parametrization is no longer used,&lt;br /&gt;
  instead we have now:&lt;br /&gt;
    - 3DOF and 2DOF XZ segments: directly update matrix&lt;br /&gt;
      with Rodrigues' formula&lt;br /&gt;
    - Other: Euler angles (no worries about singularities&lt;br /&gt;
      here)&lt;br /&gt;
  Computation of the Jacobian inverse has also changed:&lt;br /&gt;
    - The SVD algorithm is now based on LAPACK code,&lt;br /&gt;
      instead of NR, to avoid some problems with rounding&lt;br /&gt;
      errors.&lt;br /&gt;
    - When the problem is underconstrained (as is the case&lt;br /&gt;
      most of the time), the SVD is computed for the transpose&lt;br /&gt;
      of the Jacobian (faster).&lt;br /&gt;
    - A new damping algorithm called the Selectively Damped&lt;br /&gt;
      Least Squares is used, result in faster and more&lt;br /&gt;
      stable convergence.&lt;br /&gt;
    - Stiffness is implemented as if a weighted psuedo-inverse&lt;br /&gt;
      was used.&lt;br /&gt;
&lt;br /&gt;
  Tree structure support.&lt;br /&gt;
  &lt;br /&gt;
  Rotation limits:&lt;br /&gt;
    - 3DOF and 2DOF XZ segments limits are based on a swing&lt;br /&gt;
      (direct axis-angle over XZ) and twist/roll (rotation&lt;br /&gt;
      over Y) decomposition. The swing region is an ellipse&lt;br /&gt;
      on a sphere.&lt;br /&gt;
    - Rotation limits are implemented using an inner clamping&lt;br /&gt;
      loop: as long as there is a violation, a violating DOF&lt;br /&gt;
      is clamped and removed from the Jacobian, and the solution&lt;br /&gt;
      is recomputed.&lt;br /&gt;
&lt;br /&gt;
  Most work was on trying to unwind the spaghetti for editing ipos. Too much&lt;br /&gt;
  history and bad design got added here. Most evident changes:&lt;br /&gt;
  - made generic 'context' for detecting which Ipo is being edited, or to&lt;br /&gt;
    assign ipos or to retrieve ipo curves.&lt;br /&gt;
  - made generic insertkey() for all ipo types, including actions&lt;br /&gt;
  - shuffled a lot of code around to make things more logical. Also made&lt;br /&gt;
    sure local functions are not exported&lt;br /&gt;
  &lt;br /&gt;
  The implementation is based on a 8x8x8 Octree, where vertex locations are&lt;br /&gt;
  stored. Vertices on the threshold boundary of an Octree node are filled in&lt;br /&gt;
  the neighbour nodes as well, ensuring that the lookup works with threshold.&lt;br /&gt;
  The current size of the Octree gives good speedup, even for 128k vertices&lt;br /&gt;
  it only needs 256 lookup cycles per checked vertex.&lt;br /&gt;
  Same code could be used for the bevel tool for example.&lt;br /&gt;
  &lt;br /&gt;
  src/meshtools.c:&lt;br /&gt;
  int mesh_octree_table(Object *ob, float *co, char mode)  &lt;br /&gt;
&lt;br /&gt;
  - mode 's' or 'e' is &amp;quot;start octree&amp;quot; or &amp;quot;end octree&amp;quot;&lt;br /&gt;
  - mode 'u' is &amp;quot;use&amp;quot;, it then returns an index nr of the found vertex.&lt;br /&gt;
    (return -1 if not found)&lt;br /&gt;
&lt;br /&gt;
  Various stuff in one commit;&lt;br /&gt;
  &lt;br /&gt;
  - Added (BKE_utildefines.h) POINTER_TO_INT(poin) and INT_TO_POINTER(int)&lt;br /&gt;
    defines, to help fixing issues with switch to 64 bits systems. This&lt;br /&gt;
    assumes that a) not more than 16GB mem is used and b) that address&lt;br /&gt;
    space is below the 1&amp;lt;&amp;lt;35 value. The latter has to be confirmed, but it&lt;br /&gt;
    seems to conform the current 64 bits generation of OSs (for mallocs).&lt;br /&gt;
  &lt;br /&gt;
    Needless to say; use long if you want to store pointers! This is for&lt;br /&gt;
    temporal fixing.&lt;br /&gt;
  &lt;br /&gt;
  - Added editmesh version for mesh-octree lookups, not used yet.&lt;br /&gt;
  &lt;br /&gt;
  - Better Matrix to Eul, code submitted by Brecht. No time yet to do it&lt;br /&gt;
    really nice (like a Mat3ToEulCompat(mat, eul, eulc))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Dependency Graph==&lt;br /&gt;
&lt;br /&gt;
This section is all about things that have gone on 'under the hood' stuff that will be of interest to open source developers, but not to the typical end user.&lt;br /&gt;
&lt;br /&gt;
http://blender.org/cms/Dependency_Graph.633.0.html&lt;br /&gt;
&lt;br /&gt;
  New button type: ROUNDBOX This replaces drawing with uiRoundBox()&lt;br /&gt;
  or glRect() in button Panels.&lt;br /&gt;
&lt;br /&gt;
  Done Modifier and Constraints.&lt;br /&gt;
  &lt;br /&gt;
  Syntax:&lt;br /&gt;
  &lt;br /&gt;
  The last 4 free variables in the uiDefBut() call are:&lt;br /&gt;
  - float, corner-rounding (0.0-pixels),&lt;br /&gt;
  - not used,&lt;br /&gt;
  - short: roundbox type (bits, 1 2 4 8 for clockwise corners starting left/top)&lt;br /&gt;
  - short: color shade offset (color range 0-255)&lt;br /&gt;
&lt;br /&gt;
==Boundbox select==&lt;br /&gt;
  Boundbox select object mode optimisation.&lt;br /&gt;
  &lt;br /&gt;
  Changed selectprojektie (and renamed to view3d_opengl_select as suggested by Ton)&lt;br /&gt;
  to accept a buffer size, so boundbox can adapt it's buffer size to the number of object&lt;br /&gt;
  in scene. Also, the loop is done more smartly, since glSelect fills the buffer in the same &lt;br /&gt;
  order as the drawing order, so we save lops of looping on unselected object (which used&lt;br /&gt;
  to go through all the buffer before finding that they weren't selected).&lt;br /&gt;
  &lt;br /&gt;
  This scheme could probably be applied to all the other loops using glSelect. (good project&lt;br /&gt;
  for newbie coders)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==button code cleanup==&lt;br /&gt;
  LetterRip&lt;br /&gt;
  Log:&lt;br /&gt;
   - got rid of silly #define ..._BIT, #define ... (1&amp;lt;&amp;lt;..._BIT) stuff&lt;br /&gt;
   - switched almost all uiDefBut(..., TOG|BIT|..) to use UiDefButBit and the&lt;br /&gt;
     name of the actual bit define instead of just a magic constant, this makes&lt;br /&gt;
     searching the code much nicer. most of the credit here goes to LetterRip&lt;br /&gt;
     who did almost all of the conversions, I mostly just checked them over.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section end=2.40-Source code-Armatures notes /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Contrabutions =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section begin=2.40-Release Notes-Source code-Contributors /&amp;gt;&lt;br /&gt;
Credits&lt;br /&gt;
Developers who contributed to this release:&lt;br /&gt;
*Alexander Ewering (3D Text improvements, bug fixes)&lt;br /&gt;
*Alfredo de Greef (Radiance file support, Yafray export fixes)&lt;br /&gt;
*Andrea Weikert (string library, bug fixes)&lt;br /&gt;
*Austin Benesh (Python Scripts)&lt;br /&gt;
*Bill Currie - Bug FIx&lt;br /&gt;
*Brecht Van Lommel (IK Engine, LCSM and UV Editing, bug fixes)&lt;br /&gt;
*Campbell Barton (BVH I/O Update, Archimap unwrapper, BPython API)&lt;br /&gt;
*Chris Burt (Radial Blend texture)&lt;br /&gt;
*Chris Want (Tuhopuu cvs support, Makefiles, bug fixes)&lt;br /&gt;
*Daniel Dunbar (Mesh drawing recode, Modifier stack)&lt;br /&gt;
*DJ Capelis (Linux platform maintenance, bug fixes, 64 bits support)&lt;br /&gt;
*Eckhard M. Jaeger - tweaks to modifier UI&lt;br /&gt;
*Erwin Coumans (Bullet Physics, Game engine fixes)&lt;br /&gt;
*Jean-Luc Peurriere (Dependency Graph, OSX platform maintenance, bug fixes)&lt;br /&gt;
*Jens Ole Wundt (Softbody improvements, Image paint, bug fixes)&lt;br /&gt;
*Janne Karhu (Particles upgrade groundwork)&lt;br /&gt;
*Jiri Hnidek (Window merging tool, Blender-Verse, bug fixes)&lt;br /&gt;
*Johnny Matthews (Meshedit Subdivide Core, Edgeslide, Widgetmaker Script, Python api)&lt;br /&gt;
*Joilnen Leite (Sort by extension on window file select)&lt;br /&gt;
*Jospeph Gilbert (Python Armature API, Python Mathutils, bug fixes&lt;br /&gt;
*Jorge Bernal - game compiling fix)&lt;br /&gt;
*Ken Hughes (Python API Mesh module, bug fixes)&lt;br /&gt;
*Kent Mein (libtiff support, various small fixes)&lt;br /&gt;
*Marc Freixas (Boolean recode)&lt;br /&gt;
*Martin Poirier (Transform tools, bug fixes)&lt;br /&gt;
*Matt Ebb (Lamps, Camera and Object center visualisations, sequence strip cutting, text UI controls and menu updates)&lt;br /&gt;
*Matthew Plough - SWAP_COPY&lt;br /&gt;
*Mika Saari (Unicode character support for Font Object)&lt;br /&gt;
*Nathan Letwory (Bug fixes)&lt;br /&gt;
*Nils Thuerey (Fluid Simulation)&lt;br /&gt;
*Pontus Lidman (Python script)&lt;br /&gt;
*Roland Hess (Floor Constraint, Ghost Bug fix)&lt;br /&gt;
*Simon Clitherow (Bug fixes, Window platform maintenance)&lt;br /&gt;
*Shaul Kedem (File compression,Sequencer frame reversal)&lt;br /&gt;
*Stephen Swaney (Python API, bug fixes)&lt;br /&gt;
*Stephane Soppero (Python API)&lt;br /&gt;
*Tom Musgrove (Python scripts, Release logs, Buttons code cleaning)&lt;br /&gt;
*Ton Roosendaal (Animation recode project, particles, hair, bug fixes)&lt;br /&gt;
*Toni Alatalo (Python API, bug fixes)&lt;br /&gt;
*Vidar Madsen (Fix for animating static particles)&lt;br /&gt;
*Willian P. Germano (Python API, bug fixes, docs)&lt;br /&gt;
*Yehoshua Sapir (Python script)&lt;br /&gt;
&amp;lt;section end=2.40-Release Notes-Source code-Contributors /&amp;gt;&lt;/div&gt;</summary>
		<author><name>wiki&gt;Blendify</name></author>
		
	</entry>
</feed>