﻿<?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%3AChingachgook%2FGsoc2009%2FEnd-User_Specification</id>
	<title>利用者:Chingachgook/Gsoc2009/End-User Specification - 版の履歴</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%3AChingachgook%2FGsoc2009%2FEnd-User_Specification"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Chingachgook/Gsoc2009/End-User_Specification&amp;action=history"/>
	<updated>2026-04-20T04:50:24Z</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:Chingachgook/Gsoc2009/End-User_Specification&amp;diff=88099&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:Chingachgook/Gsoc2009/End-User_Specification&amp;diff=88099&amp;oldid=prev"/>
		<updated>2018-06-28T18:41:44Z</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日 (木) 18:41時点における版&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:Chingachgook/Gsoc2009/End-User_Specification&amp;diff=88098&amp;oldid=prev</id>
		<title>82.82.174.59: /* Non-Standard extensions which need to be defined */</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Chingachgook/Gsoc2009/End-User_Specification&amp;diff=88098&amp;oldid=prev"/>
		<updated>2009-11-13T23:39:10Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Non-Standard extensions which need to be defined&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Introduction ==&lt;br /&gt;
This plugin is made for Blender 2.5, using Collada spec 1.5.0 and OpenCOLLADA.&lt;br /&gt;
&lt;br /&gt;
== Non-Standard extensions which need to be defined ==&lt;br /&gt;
As said, COLLADA has no specific support for normal maps. The FCollada plugin does this for Maya and 3ds Max with the &amp;quot;&amp;lt;extra&amp;gt;&amp;quot; tag.&lt;br /&gt;
;'''What do we choose?'''&lt;br /&gt;
:* Blender Tag-Set (used by no-one till now)&lt;br /&gt;
:* FCollada&lt;br /&gt;
:* A way which will be standard in (coming standard) COLLADA 1.6 (I don't think that exists)&lt;br /&gt;
&lt;br /&gt;
I suggest we take the FCollada implementation, since it seems to be already widely used.&lt;br /&gt;
 &lt;br /&gt;
=== About the COLLADA module ===&lt;br /&gt;
====OPENCOLLADA====&lt;br /&gt;
&lt;br /&gt;
Erwin Cowmans recommended to use this library because NextGen were&lt;br /&gt;
sponsored by Sony to develop OpenCollada.&lt;br /&gt;
&lt;br /&gt;
OpenCollada differs from a regular DOM in that it writes/reads data&lt;br /&gt;
&amp;quot;on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This is done for memory and speed efficiency.&lt;br /&gt;
&lt;br /&gt;
OpenCollada depends on two libraries: pcre (217K on linux) and expat (202K).&lt;br /&gt;
&lt;br /&gt;
====EXPORT====&lt;br /&gt;
&lt;br /&gt;
File is written just as new elements are added.&lt;br /&gt;
&lt;br /&gt;
The following steps are repeated:&lt;br /&gt;
&lt;br /&gt;
* prepare element, or element hierarchy&lt;br /&gt;
* write it&lt;br /&gt;
&lt;br /&gt;
Collada allows multiple scene storage, this fits nicely with Blender database.&lt;br /&gt;
&lt;br /&gt;
Currently the exporter writes active scene taken from context.  It exports scene graph by looping through scene-&amp;gt;base linked list. Inside scene graph, nodes link to geometry and material data by ids (XML referencing method).  The geometry and material data is defined separately.  For example geometries are stored in&lt;br /&gt;
&amp;lt;library_geometries&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For each &amp;lt;library_...&amp;gt; we create a class. Here is a simple sample of exporter's code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class ImagesExporter: COLLADASW::LibraryImages&lt;br /&gt;
{&lt;br /&gt;
	const char *mfilename;&lt;br /&gt;
       // contains list of written images, to avoid duplicates&lt;br /&gt;
	std::vector&amp;lt;std::string&amp;gt; mImages;&lt;br /&gt;
public:&lt;br /&gt;
	ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename) :&lt;br /&gt;
COLLADASW::LibraryImages(sw), mfilename(filename)&lt;br /&gt;
	{}&lt;br /&gt;
	&lt;br /&gt;
	void exportImages(Scene *sce)&lt;br /&gt;
	{&lt;br /&gt;
		openLibrary();&lt;br /&gt;
               // we take images from textures to avoid exporting unused images&lt;br /&gt;
		forEachMaterialInScene(sce, *this);&lt;br /&gt;
&lt;br /&gt;
		closeLibrary();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void operator()(Material *ma, Object *ob)&lt;br /&gt;
	{&lt;br /&gt;
        // some code...&lt;br /&gt;
       }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====IMPORT====&lt;br /&gt;
&lt;br /&gt;
Similar approach: &amp;quot;catch things on the fly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Importer implements an interface which defines callbacks that are&lt;br /&gt;
called by OpenCollada as it reads DAE.&lt;br /&gt;
&lt;br /&gt;
Some callback examples:&lt;br /&gt;
&lt;br /&gt;
* writeGeometry - geometry data is passed&lt;br /&gt;
* writeVisualScene - scene graph is passed&lt;br /&gt;
* writeMaterial&lt;br /&gt;
&lt;br /&gt;
These can be called by SAX parser in any order.&lt;br /&gt;
&lt;br /&gt;
Each callback is passed a pointer to data which is OpenCollada frees once&lt;br /&gt;
callback returns.&lt;br /&gt;
&lt;br /&gt;
So what we're going to do here:&lt;br /&gt;
&lt;br /&gt;
* create a Mesh, fill it's geometry data and add it to Blender database in writeGeometry&lt;br /&gt;
* create Objects in writeVisualScene. Here we get node info: parenting, transforms and data links (material, geometry)&lt;br /&gt;
* link Object with Mesh in the &amp;quot;end&amp;quot; callback which is called when DAE reading finishes&lt;br /&gt;
&lt;br /&gt;
Although it is possible to read DAE in two passes:&lt;br /&gt;
&lt;br /&gt;
* first pass: read scene graph info&lt;br /&gt;
* second pass: read data (geometry, etc.) and link nodes to data&lt;br /&gt;
&lt;br /&gt;
ColladaMaya importer does so, but for now doing this seems redundant.&lt;br /&gt;
&lt;br /&gt;
== File format support completeness&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
The end target is to make Blender understand COLLADA files as completely as possible.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The list of features planned to support:&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*geometry: vertices, normals, uvs, vertex colors&amp;lt;br&amp;gt; &lt;br /&gt;
*materials &amp;amp;amp; textures&amp;lt;br&amp;gt; &lt;br /&gt;
*object transform animation: meshes, cameras, lamps, etc.&amp;lt;br&amp;gt; &lt;br /&gt;
*skinned animation&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not planned features:&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*kinematics - don't know how complex this is&amp;lt;br&amp;gt; &lt;br /&gt;
*physics - should be simple?&amp;lt;br&amp;gt; &lt;br /&gt;
*shaders&lt;br /&gt;
&lt;br /&gt;
If some advanced features cannot be implemented at the moment, focus on those I can do and they will include most commonly used data. &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Make good code structure so that new developers can jump in easily.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
COLLADA spec defines requirements for exporters and importers - follow them.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== User interface&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
The rule I'll follow is &amp;quot;keep the UI as simple as possible&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If unsupported data is being imported, inform a user clearly that it is not supported and, if possible, add what can be done to solve the problem.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Instructions ===&lt;br /&gt;
There are two submenus &amp;quot;Import&amp;quot; and &amp;quot;Export&amp;quot; in &amp;quot;File&amp;quot; menu. Each of them contains a list of importers/exporters. Find &amp;quot;COLLADA&amp;quot;, press it, a pop-up menu should open, here you can choose a file you want to import (if you import) or create a dae file (if you export).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Don't forget to add the &amp;quot;.dae&amp;quot; file format at the end while exporting.&lt;br /&gt;
&lt;br /&gt;
== End-user documentation&amp;lt;br&amp;gt;  ==&lt;br /&gt;
=== Supported features&amp;lt;br&amp;gt; ===&lt;br /&gt;
==== Exporter&amp;lt;br&amp;gt; ====&lt;br /&gt;
* Scenes&lt;br /&gt;
** only current scene&lt;br /&gt;
* Geometry&lt;br /&gt;
**only meshes&lt;br /&gt;
**vertices, faces, normals&lt;br /&gt;
* Materials&lt;br /&gt;
** shaders: lambert, phong, blinn, others are exported as lambert&lt;br /&gt;
** shader options: emission, ambient, diffuse, specular, shininess, reflective, reflectivity, transparency, index of refraction.&lt;br /&gt;
** per-face materials&lt;br /&gt;
* Textures&lt;br /&gt;
** mapped to: diffuse, ambient, specular, emission and reflective colors, there is no normal map in Collada but we can support it through &amp;lt;extra&amp;gt; as FCollada plugin for Maya does. Not sure if it's neccessary for exporter but importer should support this - creatures exported from Spore have such maps. &lt;br /&gt;
** NOTE: input is always assumed to be UV - if textures input is not UV it won't be exported&lt;br /&gt;
* UVs&lt;br /&gt;
** multiple UV layers&lt;br /&gt;
* Cameras&lt;br /&gt;
** camera options unfinished&lt;br /&gt;
* Lights&lt;br /&gt;
** area lamp is not supported - accoding to Collada spec there is no such element - so it will be exported as a local lamp&lt;br /&gt;
* Skinning&lt;br /&gt;
** NOTE: Armatures not assigned to geometry won't be exported properly. &lt;br /&gt;
* Animation&lt;br /&gt;
** object animation&lt;br /&gt;
** skinned animation(linear)&lt;br /&gt;
* Objects hierarchy&lt;br /&gt;
* Empties&lt;br /&gt;
&lt;br /&gt;
==== Importer&amp;lt;br&amp;gt; ====&lt;br /&gt;
Should provide inverse functions of everything that exporter does.&lt;br /&gt;
* Scenes&lt;br /&gt;
** scenes are imported in the current scene&lt;br /&gt;
* Geometry&lt;br /&gt;
** only meshes&lt;br /&gt;
** vertices, faces, normals&lt;br /&gt;
** NOTE: polygons with less than 3 vertices are not supported, polygons with more than 4 verts will be triangulated&lt;br /&gt;
* Materials&lt;br /&gt;
** shaders: lambert, blinn, phong, constant is imported as lambert&lt;br /&gt;
** shader options: diffuse, emission, ambient, reflective, reflectivity, index of refraction, specular&lt;br /&gt;
** per-face materials&lt;br /&gt;
* Textures&lt;br /&gt;
** mapped to: diffuse, emission, ambient, reflective, specular&lt;br /&gt;
* UVs&lt;br /&gt;
** multiple UV channels&lt;br /&gt;
* Cameras&lt;br /&gt;
** camera options unfinished&lt;br /&gt;
* Lights&lt;br /&gt;
* Empties&lt;br /&gt;
* Objects hierarchy&lt;br /&gt;
* Skinning&lt;br /&gt;
* Animation&lt;br /&gt;
** object animation&lt;br /&gt;
** skinned animation unfinished&lt;br /&gt;
&lt;br /&gt;
=== Missing ===&lt;br /&gt;
The following features are missing but they could be added later:&lt;br /&gt;
* COLLADA supports lots of different material profiles - such as - profile CG, Open GL ES, Open GL ES 2.0, GLSL, and others. Maybe once someone would like to add support for them. Currently plugin supports only profile COMMON.&lt;br /&gt;
* Splines, lines, nurbs.&lt;br /&gt;
* Kinematics&lt;br /&gt;
* Physics&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
=== Exporter ===&lt;br /&gt;
...&lt;br /&gt;
=== Importer ===&lt;br /&gt;
Thanks to Dan Moskowitz, one of Maxis' developers, who shared models exported from Spore for testing. Here are these models imported into Blender 2.5&lt;br /&gt;
[[Image:toaster.png|none|frame|none]]&lt;br /&gt;
[[Image:krangor.png|none|frame|none]]&lt;br /&gt;
[[Image:Frog-4.png|none|frame|none]]&lt;br /&gt;
[[Image:Frog-5.png|none|frame|none]]&lt;br /&gt;
[[Image:Frog-6.png|none|frame|none]]&lt;br /&gt;
[[Image:Frog-7.png|none|frame|none]]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://opencollada.org/ OpenCOLLADA official site] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://collada.org/ COLLADA - Digital Asset and FX Exchange Schema] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.graphicall.org/builds/builds/showbuild.php?action=show&amp;amp;id=1107 Windows Build of the branch. r22942]&lt;/div&gt;</summary>
		<author><name>82.82.174.59</name></author>
		
	</entry>
</feed>