<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>交典创艺 交互设计 &#187; 教程</title>
	<atom:link href="http://spotlightor.com/blog/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://spotlightor.com</link>
	<description>始终专注于提供高品质的交互体验，仅此而已</description>
	<lastBuildDate>Sun, 06 May 2012 23:34:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>那些不易注意到的Unity实用小功能</title>
		<link>http://spotlightor.com/blog/tutorial/unity-editor-lessor-known-features/</link>
		<comments>http://spotlightor.com/blog/tutorial/unity-editor-lessor-known-features/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 07:45:12 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Unity3D]]></category>
		<category><![CDATA[游戏开发]]></category>

		<guid isPermaLink="false">http://spotlightor.com/?p=1449</guid>
		<description><![CDATA[Unity是一款十分易用的游戏引擎，上手并不困难——恐怕也正因如此，少有人会仔细阅读帮助文档对Unity编辑器的功能做一个全面细致的了解，而一些非常实用的小功能在日常使用中很难被发现，但它们对工作效率的提升是有不小的帮助的。AlmostLogical的Devin Reimer有感于此为大家列举了10条不易注意到的Unity实用小功能，在此翻译给大家，并对一些步骤补充了示意图。 1）锁定Inspector &#8211; 在inspector面板上方有一个小“锁”图标，点击锁住后可以将inspector面板锁定在当前选择的GameObject上。在你需要大量设置某个GameObject的参数时非常有效（例如为一个数组里添加大量引用）。 2）多个Inspector &#8211; 点击小“锁”图标旁边的“context menu”图标，在下拉菜单中选择“Add Tab”，然后选“inspector”。与“锁定Inspector”功能配合使用将大幅提高工作效率。 3）搜索特定类型 &#8211; 不但可以通过名称进行快速检索，你还可以使用类型——点击“Search”图标并在下拉菜单中选择“Type”，或者使用更迅捷的方法：直接键入“t:type”，例如t:texture、t:material等等。 4）在Inspector的数组（Array）中插入或删除数据 &#8211; 在Unity中编辑数组非常方便！——直到某一天你打算从中间删除或插入数据……这似乎是不可能完成的任务，但它确实可以完成——插入数据（复制一个数据），选中数组中的数据然后Ctrl-D（windows）、Command-D（Mac）。删除数组中间的数据：Shift-Delete两次（第一次清空数据，第二次删除数据）。 5）在Inspector文本编辑框中换行 &#8211; Mac只需Option-Return，而Windows下这个功能……被“遗漏”了……一般情况下你需要从别的文本编辑器（例如记事本）中拷贝过来带有换行的文本——这实在有些蹩脚，于是有人写了一个Editor Script来实现这个功能：只需在你的工程目录下创建一个Editor文件夹，然后把这个脚本（CreateNewLine.cs）放到里面即可。 6）快速创建Prefab &#8211; 在Hierachy里设置好你的GameObject然后将它直接拖拽到Project面板——Prefab即刻呈现！ 7）在Scene View下编辑基础型Collider的尺寸 &#8211; 选中一个带有Collider的物体，按住Shift键，绿色小方块出现后就可以进行变形操作了（鼠标必须准确点中绿色方块，待其变黄后即可拖拽缩放）。注意，如果Inspector中Collider属性面板没有展开是不能使用该功能的。 8）为物体设置自定义图标 &#8211; 在inspector中选中GameObject的图标，在下拉列表中可以选择图标类型、颜色甚至创建一个自定义图标。你还可以为脚本附加图标——在Project面板中选中脚本，然后在inspector中点击它的图标。这个脚本的图标将会被自动附加给所有绑定了这个脚本的物体，如果你在做类似路径点这样的东西，这个功能将显得极为实用。 9）对齐到顶点，对齐到Collider &#8211; 要对齐到顶点：按住“V”然后点击目标顶点，然后拖拽鼠标到另一个mesh中你希望对齐的顶点。对齐到Collider：使用Translate工具时按住Shift键。 10）Editor编程 &#8211; 如果Unity Editor缺少你所需的功能，你可以自己写。通过脚本扩展Editor非常容易，效果也非常显著。例如PlayModePersist可以保存你在PlayMode下对GameObject做出的任何改变。]]></description>
			<content:encoded><![CDATA[<p>Unity是一款十分易用的游戏引擎，上手并不困难——恐怕也正因如此，少有人会仔细阅读帮助文档对Unity编辑器的功能做一个全面细致的了解，而一些非常实用的小功能在日常使用中很难被发现，但它们对工作效率的提升是有不小的帮助的。<a title="AlmostLogical Blog" href="http://blog.almostlogical.com" target="_blank">AlmostLogical</a>的Devin Reimer有感于此为大家<a href="http://blog.almostlogical.com/2011/12/19/unity-editor-lesser-known-features" target="_blank">列举了10条不易注意到的Unity实用小功能</a>，在此翻译给大家，并对一些步骤补充了示意图。<span id="more-1449"></span></p>
<p>1）锁定Inspector &#8211; 在inspector面板上方有一个小“锁”图标，点击锁住后可以将inspector面板锁定在当前选择的GameObject上。在你需要大量设置某个GameObject的参数时非常有效（例如为一个数组里添加大量引用）。<br />
<a href="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_lock_inspector.jpg"><img class="alignnone size-full wp-image-1465" title="u3d_unkown_feature_lock_inspector" src="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_lock_inspector.jpg" alt="" /></a></p>
<p>2）多个Inspector &#8211; 点击小“锁”图标旁边的“context menu”图标，在下拉菜单中选择“Add Tab”，然后选“inspector”。与“锁定Inspector”功能配合使用将大幅提高工作效率。<br />
<a href="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_multi_inspector.jpg"><img class="alignnone size-full wp-image-1466" title="u3d_unkown_feature_multi_inspector" src="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_multi_inspector.jpg" alt="" /></a></p>
<p>3）搜索特定类型 &#8211; 不但可以通过名称进行快速检索，你还可以使用类型——点击“Search”图标并在下拉菜单中选择“Type”，或者使用更迅捷的方法：直接键入“t:type”，例如t:texture、t:material等等。<br />
<a href="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_type_search.jpg"><img class="alignnone size-full wp-image-1457" title="u3d_unkown_feature_type_search" src="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_type_search.jpg" alt="" /></a></p>
<p>4）在Inspector的数组（Array）中插入或删除数据 &#8211; 在Unity中编辑数组非常方便！——直到某一天你打算从中间删除或插入数据……这似乎是不可能完成的任务，但它确实可以完成——插入数据（复制一个数据），选中数组中的数据然后Ctrl-D（windows）、Command-D（Mac）。删除数组中间的数据：Shift-Delete两次（第一次清空数据，第二次删除数据）。</p>
<p>5）在Inspector文本编辑框中换行 &#8211; Mac只需Option-Return，而Windows下这个功能……被“遗漏”了……一般情况下你需要从别的文本编辑器（例如记事本）中拷贝过来带有换行的文本——这实在有些蹩脚，于是有人写了一个Editor Script来实现这个功能：只需在你的工程目录下创建一个Editor文件夹，然后把这个脚本（<a title="CreateNewLine.cs" href="http://blog.almostlogical.com/resources/InsertNewLine.cs" target="_blank">CreateNewLine.cs</a>）放到里面即可。</p>
<p>6）快速创建Prefab &#8211; 在Hierachy里设置好你的GameObject然后将它直接拖拽到Project面板——Prefab即刻呈现！</p>
<p>7）在Scene View下编辑基础型Collider的尺寸 &#8211; 选中一个带有Collider的物体，按住Shift键，绿色小方块出现后就可以进行变形操作了（鼠标必须准确点中绿色方块，待其变黄后即可拖拽缩放）。注意，如果Inspector中Collider属性面板没有展开是不能使用该功能的。<br />
<a href="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_scale_collider.jpg"><img class="alignnone size-full wp-image-1456" title="u3d_unkown_feature_scale_collider" src="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_scale_collider.jpg" alt="" /></a></p>
<p>8）为物体设置自定义图标 &#8211; 在inspector中选中GameObject的图标，在下拉列表中可以选择图标类型、颜色甚至创建一个自定义图标。你还可以为脚本附加图标——在Project面板中选中脚本，然后在inspector中点击它的图标。这个脚本的图标将会被自动附加给所有绑定了这个脚本的物体，如果你在做类似路径点这样的东西，这个功能将显得极为实用。</p>
<p>9）对齐到顶点，对齐到Collider &#8211; 要对齐到顶点：按住“V”然后点击目标顶点，然后拖拽鼠标到另一个mesh中你希望对齐的顶点。对齐到Collider：使用Translate工具时按住Shift键。<br />
<a href="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_vertex_align.jpg"><img class="alignnone size-full wp-image-1469" title="u3d_unkown_feature_vertex_align" src="http://spotlightor.com/html/wp-content/uploads/u3d_unkown_feature_vertex_align.jpg" alt="" /></a></p>
<p>10）Editor编程 &#8211; 如果Unity Editor缺少你所需的功能，你可以自己写。通过脚本扩展Editor非常容易，效果也非常显著。例如<a title="PlayModePersist" href="http://u3d.as/content/almost-logical-software/play-mode-persist/1tS" target="_blank">PlayModePersist</a>可以保存你在PlayMode下对GameObject做出的任何改变。</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/unity-editor-lessor-known-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Unity3D在Win7 64位系统下载入DLL插件报错崩溃</title>
		<link>http://spotlightor.com/blog/tutorial/solve-unity3d-load-dll-plugin-crash-in-win-7-64bit/</link>
		<comments>http://spotlightor.com/blog/tutorial/solve-unity3d-load-dll-plugin-crash-in-win-7-64bit/#comments</comments>
		<pubDate>Sun, 15 May 2011 16:53:11 +0000</pubDate>
		<dc:creator>管理员</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://spotlightor.com/?p=1395</guid>
		<description><![CDATA[换新电脑后装的是Windows 7 64位系统，Unity3D等各种软件都运行正常，直到今天我尝试打开之前所做的人脸识别以及增强现实Unity工程文件时，每次运行程序立刻崩溃，原因显然是DLL插件加载造成的。可以确定是由于win7 64位系统造成的，于是打开Unity.exe的“兼容性模式”选项，让其运行在“XP Service Pack 3”模式下，问题得以解决！]]></description>
			<content:encoded><![CDATA[<p>换新电脑后装的是Windows 7 64位系统，Unity3D等各种软件都运行正常，直到今天我尝试打开之前所做的人脸识别以及增强现实Unity工程文件时，每次运行程序立刻崩溃，原因显然是DLL插件加载造成的。同样的Unity工程文件在老机器的Windows XP下运行正常，在网上搜索后发现也有人在换成64位win 7后出现了无法加载DLL插件的问题——基本可以确定是由于win7 64位系统造成的，但是没有让Unity.exe运行在32位模式的选项（事实上Unity3D本身就是32位程序），于是<strong>打开Unity.exe的“兼容性模式”选项，让其运行在“XP Service Pack 3”模式下，问题得以解决！</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/solve-unity3d-load-dll-plugin-crash-in-win-7-64bit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity3D角色动画导出经验及Demo</title>
		<link>http://spotlightor.com/blog/tutorial/unity3d-character-animation-demo/</link>
		<comments>http://spotlightor.com/blog/tutorial/unity3d-character-animation-demo/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 17:19:22 +0000</pubDate>
		<dc:creator>管理员</dc:creator>
				<category><![CDATA[试验]]></category>
		<category><![CDATA[教程]]></category>

		<guid isPermaLink="false">http://spotlightor.com/?p=1199</guid>
		<description><![CDATA[刑天又回来了，这次是在Unity3D中！ 今天学习了Unity3D中关于动画方面的东西，使用《山海游》中的角色刑天作为主角做了一个小的角色动画演示demo：http://spotlightor.com/lab/unity3d/animation 操作方法： 方向：ASDW或键盘方向键 攻击：左Ctrl Unity3D动画导入经验 Unity3D支持直接读取Max相当不错，并且允许通过文件名的方式来为某一个模型添加多段动画： YourModel.max YourModel@run.max（给YourModel附加名为run的动画） YourModel@attack.max（给YourModel附加名为attack的动画） 不过官方推荐的多段动画存储方式还是在一个时间轴内制作多段动画然后在导入的时候设置分段导入动画，只是当年在做这个角色时还不知道这样的做法，所以做成了独立的文件，好在Unity3D有办法搞定。 在我导出动画的时候遇到了FBX插件版本的问题，我的Max 2009装的是2011.3最新版的FBX插件（最新版FBX插件请访问这里），导致不论是用FBX格式还是使用Max格式动画都无法导出。Unity3D 2.6版的FBX导入功能是使用FBX2009版的SDK开发的，所以需要使用老版本的插件，根据Unity Answers上的回复，Unity3D 2.6目前支持的最高版本的FBX插件为2010.2版（请点击这里下载Autodesk FBX 2010.2.1），装回老版本插件后，FBX动画导出正常，而且连Max的导出也OK了，我怀疑Unity对于Max文件的导入实际上是在内部使用了FBX作为中间格式，因此FBX插件的版本影响到Max文件的导入。 据说Unity3D 3开始将使用FBX2010的SDK开发，届时就需要再更新插件了。 Unity3D会随着升级不断支持更新版本的FBX、三维软件格式（.max .blend等），具体版本数据请关注Unity3D版本介绍信息。]]></description>
			<content:encoded><![CDATA[<p><img src="http://spotlightor.com/html/wp-content/uploads/xingtian_is_back.jpg" alt="" width="640" height="360" /></p>
<div class="excerpt">刑天又回来了，这次是在Unity3D中！</div>
<p>今天学习了Unity3D中关于动画方面的东西，使用《山海游》中的角色刑天作为主角做了一个小的角色动画演示demo：<a href="http://spotlightor.com/lab/unity3d/animation" target="_blank">http://spotlightor.com/lab/unity3d/animation</a><span id="more-1199"></span></p>
<p>操作方法：</p>
<ul>
<li>方向：ASDW或键盘方向键</li>
<li>攻击：左Ctrl</li>
</ul>
<h4>Unity3D动画导入经验</h4>
<p>Unity3D支持直接读取Max相当不错，并且允许通过文件名的方式来为某一个模型添加多段动画：</p>
<ul>
<li>YourModel.max</li>
<li>YourModel@run.max（给YourModel附加名为run的动画）</li>
<li>YourModel@attack.max（给YourModel附加名为attack的动画）</li>
</ul>
<p>不过官方推荐的多段动画存储方式还是在一个时间轴内制作多段动画然后在导入的时候设置分段导入动画，只是当年在做这个角色时还不知道这样的做法，所以做成了独立的文件，好在Unity3D有办法搞定。</p>
<p><del>在我导出动画的时候遇到了FBX插件版本的问题，我的Max 2009装的是2011.3最新版的FBX插件（<a title="Autodesk最新版FBX插件下载页面" href="http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&amp;id=10775855" target="_blank">最新版FBX插件请访问这里</a>），导致不论是用FBX格式还是使用Max格式动画都无法导出。Unity3D 2.6版的FBX导入功能是使用FBX2009版的SDK开发的，所以需要使用老版本的插件，根据Unity Answers上的回复，Unity3D 2.6目前支持的最高版本的FBX插件为2010.2版（<a title="Autodesk FBX Plugin 2010.2.1" href="http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&amp;id=14942949" target="_blank">请点击这里下载Autodesk FBX 2010.2.1</a>），装回老版本插件后，FBX动画导出正常，而且连Max的导出也OK了，我怀疑Unity对于Max文件的导入实际上是在内部使用了FBX作为中间格式，因此FBX插件的版本影响到Max文件的导入。</del></p>
<p><del>据说Unity3D 3开始将使用FBX2010的SDK开发，届时就需要再更新插件了。</del></p>
<p>Unity3D会随着升级不断支持更新版本的FBX、三维软件格式（.max .blend等），具体版本数据请关注Unity3D版本介绍信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/unity3d-character-animation-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity3D使用C#实现Coroutines &amp; Yield</title>
		<link>http://spotlightor.com/blog/tutorial/unity3d_implement_coroutines_yield_in_csharp/</link>
		<comments>http://spotlightor.com/blog/tutorial/unity3d_implement_coroutines_yield_in_csharp/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:36:43 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/index.php/2009/12/uncategorized/unity3d_implement_coroutines_yield_in_csharp/</guid>
		<description><![CDATA[Coroutines &#038; Yield是Unity3D编程中重要的概念，它可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行，但是在Javascript与C#中实现Coroutines &#038; Yield，在语法上却有一些区别]]></description>
			<content:encoded><![CDATA[<p>Coroutines &amp; Yield是Unity3D编程中重要的概念，它可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行，但是在Javascript与C#中实现Coroutines &amp; Yield，在语法上却有一些区别：</p>
<ol>
<li>yield不可单独使用</li>
</ol>
<p>需要与return配合使用，例如：</p>
<pre>
yield return 0; //等0帧
yield return 1; //等1帧
yield return WaitForSeconds(3.0); //等待3秒
</pre>
<p>所有使用yield的函数必须将返回值类型设置为IEnumerator类型，例如：</p>
<pre>
IEnumerator DoSomeThingInDelay() {...}
</pre>
<p>最后，也是在”Using C#”这个章节中没有讲到的关键一点是，所有IEnumerator类型函数必须使用”StartCoroutine”这个函数触发，不能单独使用，例如：</p>
<pre>
StartCoroutine(DoSomeThingInDelay());
</pre>
<p><span style="text-decoration: line-through;">最后附上学习Coroutines &amp; Yield时所做的小例子，脚本的作用是不断随机改变材质的颜色，演示demo使用”V字仇杀队”中的面具。</span></p>
<p><span id="more-545"></span></p>
<pre>
using UnityEngine;
using System.Collections;

public class RandomColor : MonoBehaviour {

public float delayInSecond = 1;
public Material targetMaterial;

// Use this for initialization
void Start () {
StartCoroutine(AutoChangeColor());
}

// Update is called once per frame
void Update () {
}

IEnumerator AutoChangeColor()
{
yield return 0; //确保Time.deltaTime为0

Color colorNew = GenerateRandomColor();
Color colorNow = targetMaterial.GetColor(&amp;amp;quot;_Color&amp;amp;quot;);
float timeEclapsed = 0;
for (timeEclapsed = 0; timeEclapsed &amp;amp;lt; delayInSecond; timeEclapsed += Time.deltaTime)
{
float progress = timeEclapsed / delayInSecond;
Color colorTween = new Color(
(colorNew.r - colorNow.r) * progress + colorNow.r,
(colorNew.g - colorNow.g) * progress + colorNow.g,
(colorNew.b - colorNow.b) * progress + colorNow.b
);
targetMaterial.SetColor(&amp;amp;quot;_Color&amp;amp;quot;, colorTween);
yield return 1;
}

StartCoroutine(AutoChangeColor());
}

Color GenerateRandomColor(){
Color color = new Color();
color.r = Random.value;
color.g = Random.value;
color.b = Random.value;

return color;
}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/unity3d_implement_coroutines_yield_in_csharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity3D中如何调用其他GameObject的脚本函数</title>
		<link>http://spotlightor.com/blog/tutorial/how-to-call-function-in-other-gameobjects-unity3d/</link>
		<comments>http://spotlightor.com/blog/tutorial/how-to-call-function-in-other-gameobjects-unity3d/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 00:46:59 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=528</guid>
		<description><![CDATA[调用其他实例的脚本是一种很常用的需求，在Unity3D中实现起来也有多种方]]></description>
			<content:encoded><![CDATA[<p>调用其他实例的脚本是一种很常用的需求，在Unity3D中实现起来也有多种方法，假设在ScriptB有一个DoSomething函数，如下所示：</p>
<pre>
using UnityEngine;

public class ScriptB : MonoBehaviour
{
 public void DoSomething()
 {
 Debug.Log(&quot;Hi there&quot;);
 }
}
</pre>
<p>在ScriptA中如果要访问某个GameObject的ScriptB脚本中的DoSomething函数：</p>
<pre>
using UnityEngine;

public class ScriptA : MonoBehaviour
{
 public ScriptB other;
 void Update()
 {
 other.DoSomething();
 }
}
</pre>
<p>注意ScriptA有一个ScriptB类型的公共变量，这是一个绝妙的小技巧，如此一来你便可以通过编辑器拖拽任何含有ScriptB这一脚本的GameObject至该变量上（因为是public的，所以暴露于编辑器界面中），Unity会自动识别你需要赋值的不是那个GameObject，而是它所包含的ScriptB脚本。</p>
<p><span id="more-528"></span></p>
<p>除此之外，如果你不喜欢这种在编辑器中直接赋值的办法，你可以通过GameObject.Find(“somename”) 来获取GameObject：</p>
<pre>

GameObject go = GameObject.Find(&quot;somegameobjectname&quot;);

ScriptB other = (ScriptB) go.GetComponent(typeof(ScriptB));

other.DoSomething();
</pre>
<p>不过需要注意的是GameObject.Find()的执行效率非常低，所以如果可能的话还是尽可能使用“直接赋值法”吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/how-to-call-function-in-other-gameobjects-unity3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDR摄影教程 &#8211; 第3部分</title>
		<link>http://spotlightor.com/blog/tutorial/hdr-tutorial-part3/</link>
		<comments>http://spotlightor.com/blog/tutorial/hdr-tutorial-part3/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 00:03:00 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[摄影]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=369</guid>
		<description><![CDATA[书接上文。 将照片分层排列好 在下面截图的右下角你可以看到图层的排列顺序，我将Photomatix生成的HDR照片放置于最顶层，而其他三张不同曝光的照片置于其下&#8211;这三张照片的顺序无关紧要，随着你经验的增长，你往往不会使用这么多原始照片，也许一两张就足够了。 Photoshop &#8211; 在此我们将HDR照片置于最上层，其余原始图片置于下方 然后，我为HDR照片图层增加了图层蒙板（Layer Mask），并使用30%透明度的黑色笔刷在需要修改的地方进行涂抹，直到下方图层足够清晰为止。 如何创建图层蒙板并： 点击HDR照片图层 在菜单中选择：Layer &#62; Create Layer Mask &#62; Reveal All. 选择笔刷工具（快捷键B） 在上方选项中将笔刷Opacity设为30% 点击正常图层右侧的白色图层（蒙板层） 选择笔刷颜色为黑色 在照片上进行涂抹。 当你将两个图层修饰完毕后，合并这两个图层。 在下图中你可以注意到我所涂抹的地方，那些招牌在HDR处理过后难以看清，我选择最暗的一张原始照片置于其下（招牌在这里看得很清晰），然后通过蒙板将其还原于HDR图层上，这样照招牌便清晰可见了（注意对比照片左侧ABC霓虹灯字样） Photoshop &#8211; 根据需要排列图层，然后在蒙板上进行修饰 然后合并最上方两个图层，合并之后我们只剩下了3个图层。 Photoshop &#8211; 合并之后还剩下三个图层 重复以上步骤直到你对结果满意为止。 继续，下一步是通过蒙板处理掉行人周围的”鬼影”效果。我选择了一张我最满意的照片并置于其下方，然后通过蒙板和笔刷将下方的行人显露出来并与顶层融合。 去除人群的鬼影效果 步骤 6 &#8211; 降噪 你会注意到在最终得到的HDR照片中有很多噪点，这是HDR处理带来的负面效果，不过使用Noiseware很容易解决。 在此我不好详细介绍Noiseware，如果感兴趣你可以看这里的 Noiseware Review. 在此我只提醒一点：创建一个复制图层，然后再进行降噪处理，因为降噪虽然会消除噪点，同时它也很有可能会将照片中的一些细节抹掉，此时你便可以继续使用上面介绍的蒙板方法来恢复那些细节。 如下图所示，经过降噪后的天空具有了丝绸一般的质感。 这是我用过的最好的降噪软件 &#8211; 比Noise Ninja还要好！ 下面我们终于如愿以偿看到了最终的效果： 最终结果 额外步骤 &#8211; 通过 Lucis [...]]]></description>
			<content:encoded><![CDATA[<p>书接<a title="HDR摄影教程 第2部分" href="http://spotlightor.com/blog/index.php/2009/11/photography/hdr-tutorial-part-2/">上文</a>。</p>
<h4>将照片分层排列好</h4>
<p>在下面截图的右下角你可以看到图层的排列顺序，我将Photomatix生成的HDR照片放置于最顶层，而其他三张不同曝光的照片置于其下&#8211;这三张照片的顺序无关紧要，随着你经验的增长，你往往不会使用这么多原始照片，也许一两张就足够了。<br />
<img style="-moz-user-select: none;" src="http://farm1.static.flickr.com/48/161423515_0690327a20_o.jpg" alt="HDR Tutorial" /></p>
<p><em><strong>Photoshop &#8211; 在此我们将HDR照片置于最上层，其余原始图片置于下方<br />
</strong></em></p>
<p>然后，我为HDR照片图层增加了图层蒙板（Layer Mask），并使用30%透明度的黑色笔刷在需要修改的地方进行涂抹，直到下方图层足够清晰为止。</p>
<p>如何创建图层蒙板并：</p>
<ul>
<li>点击HDR照片图层</li>
<li>在菜单中选择：Layer &gt; Create Layer Mask &gt; Reveal All.</li>
<li>选择笔刷工具（快捷键B）</li>
<li>在上方选项中将笔刷Opacity设为30%</li>
<li><strong>点击正常图层右侧的白色图层（蒙板层）</strong></li>
<li>选择笔刷颜色为黑色</li>
<li>在照片上进行涂抹。</li>
<li>当你将两个图层修饰完毕后，合并这两个图层。</li>
</ul>
<p>在下图中你可以注意到我所涂抹的地方，那些招牌在HDR处理过后难以看清，我选择最暗的一张原始照片置于其下（招牌在这里看得很清晰），然后通过蒙板将其还原于HDR图层上，这样照招牌便清晰可见了（注意对比照片左侧ABC霓虹灯字样）<br />
<span id="more-369"></span><br />
<img style="display: inline; width: 480px; height: 239px; -moz-user-select: none;" src="http://farm4.static.flickr.com/3447/3837153750_029d5ae10e_o.jpg" alt="" /><br />
<em><strong>Photoshop &#8211; 根据需要排列图层，然后在蒙板上进行修饰</strong></em><br />
然后合并最上方两个图层，合并之后我们只剩下了3个图层。</p>
<p style="text-align: center;"><img style="display: inline; width: 480px; height: 292px; -moz-user-select: none;" title="Combined those two (by Stuck in Customs)" src="http://farm3.static.flickr.com/2650/3836383111_a5cbcf82bb_o.jpg" alt="Combined those two (by Stuck in Customs)" width="480" height="292" /></p>
<p style="text-align: center;"><em><strong>Photoshop &#8211; 合并之后还剩下三个图层<br />
</strong></em></p>
<p>重复以上步骤直到你对结果满意为止。</p>
<p>继续，下一步是通过蒙板处理掉行人周围的”鬼影”效果。我选择了一张我最满意的照片并置于其下方，然后通过蒙板和笔刷将下方的行人显露出来并与顶层融合。<br />
<img style="display: inline; width: 480px; height: 191px; -moz-user-select: none;" title="HDR Tutorial (by Stuck in Customs)" src="http://farm1.static.flickr.com/57/161423395_7f5df410f7_o.jpg" alt="HDR Tutorial (by Stuck in Customs)" width="480" height="191" /><br />
<strong><em>去除人群的鬼影效果</em></strong></p>
<h4>步骤 6 &#8211; 降噪</h4>
<p>你会注意到在最终得到的HDR照片中有很多噪点，这是HDR处理带来的负面效果，不过使用Noiseware很容易解决。</p>
<p>在此我不好详细介绍Noiseware，如果感兴趣你可以看这里的 <a href="http://www.stuckincustoms.com/noiseware-review/">Noiseware Review</a>.</p>
<p>在此我只提醒一点：创建一个复制图层，然后再进行降噪处理，因为降噪虽然会消除噪点，同时它也很有可能会将照片中的一些细节抹掉，此时你便可以继续使用上面介绍的蒙板方法来恢复那些细节。</p>
<p>如下图所示，经过降噪后的天空具有了丝绸一般的质感。<br />
<img style="display: inline; width: 480px; height: 291px; -moz-user-select: none;" title="The Greatness of Noiseware Professional in Action." src="http://farm1.static.flickr.com/46/161153478_346e6d73f7_o.jpg" alt="Noiseware Review" /><br />
<em><strong>这是我用过的最好的降噪软件 &#8211; 比Noise Ninja还要好！</strong></em><br />
下面我们终于如愿以偿看到了最终的效果：<br />
<a href="http://www.flickr.com/photos/stuckincustoms/440698504/" rel="nofollow"><img style="display: inline; width: 480px; height: 286px; -moz-user-select: none;" src="http://farm1.static.flickr.com/189/440698504_0c8e1a15aa_b.jpg" alt="Times Square at Dusk" /></a><br />
<em><strong>最终结果</strong></em></p>
<h4>额外步骤 &#8211; 通过 Lucis Pro 或 LucisArt 来锐化和增强照片</h4>
<p>我的很多照片都使用了Lucis来进行处理。</p>
<p>当你使用LucisArt时，我建议使用SCULPTURE模式然后将上方的滑动条设置为低于12的数值，而下方的滑动条至少高于70。通过下方的截图你可以看到照片的边缘被强调了出来，这有一点像锐化，但是根据我的判断这个效果要比锐化强得多。<br />
<a title="HDR Tutorial (by Stuck in Customs)" href="http://www.flickr.com/photos/stuckincustoms/161427233/" rel="nofollow"><img style="-moz-user-select: none;" title="HDR Tutorial (by Stuck in Customs)" src="http://farm1.static.flickr.com/44/161427233_fbc99b2c3c_o.jpg" alt="HDR Tutorial (by Stuck in Customs)" /></a></p>
<h4>又一个额外步骤 &#8211; 处理单张RAW文件</h4>
<p>在Photomatix中你可以打开一张RAW文件然后进行Tone Mapping！你会被警告说这并非一张HDR照片，但是不必管它。</p>
<p>人们一直问我是用单张的RAW好还是多张好。有些时候，当被摄物体移动时我们真的别无选择……但是使用两种方式都是可以得到好的效果的。通常情况下，如果可能的话我都会拍摄多张自动曝光的照片。</p>
<p>下面通过几张照片来展示单张RAW可以得到多好的效果。<br />
<a href="http://www.flickr.com/photos/stuckincustoms/394713395" rel="nofollow"><img src="http://farm1.static.flickr.com/126/394713395_7851d0c366_b.jpg" alt="The Place Where Rebekka's Horses Run Free" /></a><br />
<a href="http://www.flickr.com/photos/stuckincustoms/2288245961/" rel="nofollow"><img src="http://farm4.static.flickr.com/3220/2288245961_6409f3a45c_b.jpg" alt="A Giraffe on the Savannah" /></a><br />
<a href="http://www.flickr.com/photos/stuckincustoms/198735994/" rel="nofollow"><img src="http://farm1.static.flickr.com/73/198735994_bab41730c2_b.jpg" alt="This is Nathaniel" /></a><br />
<a href="http://www.flickr.com/photos/stuckincustoms/2767250890/" rel="nofollow"><img src="http://farm4.static.flickr.com/3143/2767250890_1bf7a40f85_b.jpg" alt="The Lonely Road to the Dinosaur Dig" /></a><br />
你在这里消耗了一小时的生命，但愿它能为你换来未来更多美好的回忆。</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/hdr-tutorial-part3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HDR摄影教程 &#8211; 第2部分</title>
		<link>http://spotlightor.com/blog/tutorial/hdr-tutorial-part-2/</link>
		<comments>http://spotlightor.com/blog/tutorial/hdr-tutorial-part-2/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 21:39:00 +0000</pubDate>
		<dc:creator>管理员</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[摄影]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=365</guid>
		<description><![CDATA[步骤5 &#8211; Photomatix Pro 现在是时候打开Photomatix Pro进入HDR的世界了。 Photomatix会将你所拍摄的连续曝光照片合称为一张HDR，然后你便可以Tonemap它并将其保存为JPEG。 Photomatix有多种使用方式： 将多张连续曝光照片合成为一张HDR（适用于初学者，也是本文所介绍的方法） 当你拍摄归来后批处理照片生成HDR 将一个单独的RAW格式照片转换为HDR 首先我们来介绍第一种方式，其余的方式在后面我会陆续介绍。 打开Photomatix，你会看到左侧非常简洁的一个面板，单击”Generate HDR image” 注： 如你所见，在这里我使用了5张JPEG图片，你也可以使用RAW格式的图片，但是Photomatix在生产HDR之前会自动将其转换为JPEG。从Photomatix的工程师那里了解到，照片格式的转换自己进行会更好。 Photomatix &#8211; 选择生成HDR的照片源 选择你需要转换的照片，然后你会看到第二个对话框，通常我会选择默认的设置选项，虽然使用了三角架，但我仍然担心照片会有轻微抖动，所以我让Photomatix帮我自动对齐他们（Align source images）。 通常我使用三角架以及线控快门，因此我的照片不会有抖动。但是如果你是手持拍摄的话，勾选”Align source images”选项是必须的。对于噪点以及HDR的”鬼影”效果我有更好的方法应对因此我通常不会勾选”Reduce noise”和”Attempt to reduce ghosting artifacts”。但是你可以随意尝试任何选项的组合，在这个面板中你不会出什么差错。 这只是第一个选项，后面还有很多…… 点击”Generate HDR”，然后你的电脑便会开始渲染，随后你会看到一张奇怪的图片&#8211;此时你距离大功告成还远得很。这是一张HDR照片，在Tonemap之前你可以对它进行任何处理。点击”Tone Mapping”，然后你会看到一个充满了滑动条的面包。 每一张照片都是不同的，没有一个”正确”的方法来设置这些滑动条。但是这里显然有”错误”的设置方式，亦如你经常看到的粗略HDR照片那样。我在下面贴了一张照片来展示HDR可以被处理得多么稀奇古怪&#8211;大部分人不喜欢这样稀奇古怪的照片，我刚开始时的照片也是这样的。 我不会教你们如何制作这样的HDR 上图中你可以看到我的设置，它有点太过了，关键的出错设置是”Light Smoothing”，别把它移动到太靠右的地方，Light Mode也是！ 下面是一些我推荐的设置，也是我常用的，但是它们绝不是一成不变的金科玉律： Strength &#8211; 设置为100%。如果有必要的话，最后在Photoshop里处理的时候我们可以通过一张原始照片将这个效果修正回来。 Color Saturation &#8211; 将它保持在一个正常的范围内，不要将照片的色彩弄得过度饱和&#8211;不过还是那句话，每一张照片都是不同的，也有例外情况。 Luminosity &#8211; 它用来调整照片的”绘画效果”。滑竿越靠右，画面的对比度越低，如果你在白天所拍摄的照片中存在”光晕”问题，将它移动到右侧会有所帮助&#8211;另一种去除光晕的方式会在后面论述。 Microcontrast &#8211; 一个神秘的滑竿，用来在小范围内调节色彩的细节以及波动，你可以根据自己的感觉进行尝试直到找到合适的数值。 Smoothing [...]]]></description>
			<content:encoded><![CDATA[<h2>步骤5 &#8211; Photomatix Pro</h2>
<p>现在是时候打开Photomatix Pro进入HDR的世界了。 Photomatix会将你所拍摄的连续曝光照片合称为一张HDR，然后你便可以Tonemap它并将其保存为JPEG。 Photomatix有多种使用方式：</p>
<ul>
<li>将多张连续曝光照片合成为一张HDR（适用于初学者，也是本文所介绍的方法）</li>
<li>当你拍摄归来后批处理照片生成HDR</li>
<li>将一个单独的RAW格式照片转换为HDR</li>
</ul>
<p>首先我们来介绍第一种方式，其余的方式在后面我会陆续介绍。 打开Photomatix，你会看到左侧非常简洁的一个面板，单击”Generate HDR image” 注： 如你所见，在这里我使用了5张JPEG图片，你也可以使用RAW格式的图片，但是Photomatix在生产HDR之前会自动将其转换为JPEG。从Photomatix的工程师那里了解到，照片格式的转换自己进行会更好。</p>
<p style="TEXT-ALIGN: center"><img src="http://farm1.static.flickr.com/58/161420267_0e31c781b0_b.jpg" style="DISPLAY: inline; WIDTH: 480px; HEIGHT: 295px" height="295" alt="HDR Tutorial" width="480"/></p>
<p style="TEXT-ALIGN: center"><em><strong>Photomatix &#8211; 选择生成HDR的照片源</strong></em></p>
<p> <span id="more-365"></span>
<p>选择你需要转换的照片，然后你会看到第二个对话框，通常我会选择默认的设置选项，虽然使用了三角架，但我仍然担心照片会有轻微抖动，所以我让Photomatix帮我自动对齐他们（Align source images）。 通常我使用三角架以及线控快门，因此我的照片不会有抖动。但是如果你是手持拍摄的话，勾选”Align source images”选项是必须的。对于噪点以及HDR的”鬼影”效果我有更好的方法应对因此我通常不会勾选”Reduce noise”和”Attempt to reduce ghosting artifacts”。但是你可以随意尝试任何选项的组合，在这个面板中你不会出什么差错。</p>
<p style="TEXT-ALIGN: center"><a href="http://www.flickr.com/photos/stuckincustoms/3152851174/" rel="nofollow" title="new-tutorial-Photomatix-align (by Stuck in Customs)"><img src="http://farm4.static.flickr.com/3224/3152851174_38a135e21a_o.jpg" style="DISPLAY: inline; WIDTH: 480px; HEIGHT: 472px" title="new-tutorial-Photomatix-align (by Stuck in Customs)" height="472" width="480" alt="new-tutorial-Photomatix-align (by Stuck in Customs)"/></a></p>
<p style="TEXT-ALIGN: center"><em><strong>这只是第一个选项，后面还有很多……</strong></em></p>
<p>点击”Generate HDR”，然后你的电脑便会开始渲染，随后你会看到一张奇怪的图片&#8211;此时你距离大功告成还远得很。这是一张HDR照片，在Tonemap之前你可以对它进行任何处理。点击”Tone Mapping”，然后你会看到一个充满了滑动条的面包。 每一张照片都是不同的，没有一个”正确”的方法来设置这些滑动条。但是这里显然有”错误”的设置方式，亦如你经常看到的粗略HDR照片那样。我在下面贴了一张照片来展示HDR可以被处理得多么稀奇古怪&#8211;大部分人不喜欢这样稀奇古怪的照片，我刚开始时的照片也是这样的。</p>
<p style="TEXT-ALIGN: center"><img src="http://farm1.static.flickr.com/45/161422454_bf1f0b103d_b.jpg" style="DISPLAY: inline; WIDTH: 480px; HEIGHT: 344px" title="HDR Tutorial (by Stuck in Customs)" height="344" width="480" alt="HDR Tutorial (by Stuck in Customs)"/></p>
<p style="TEXT-ALIGN: center"><em><strong>我不会教你们如何制作这样的HDR</strong></em></p>
<p>上图中你可以看到我的设置，它有点太过了，关键的出错设置是”Light Smoothing”，别把它移动到太靠右的地方，Light Mode也是！ 下面是一些我推荐的设置，也是我常用的，但是它们绝不是一成不变的金科玉律：</p>
<ul>
<li><strong>Strength</strong> &#8211; 设置为100%。如果有必要的话，最后在Photoshop里处理的时候我们可以通过一张原始照片将这个效果修正回来。</li>
<li><strong>Color Saturation</strong> &#8211; 将它保持在一个正常的范围内，不要将照片的色彩弄得过度饱和&#8211;不过还是那句话，每一张照片都是不同的，也有例外情况。</li>
<li><strong>Luminosity</strong> &#8211; 它用来调整照片的”绘画效果”。滑竿越靠右，画面的对比度越低，如果你在白天所拍摄的照片中存在”光晕”问题，将它移动到右侧会有所帮助&#8211;另一种去除光晕的方式会在后面论述。</li>
<li><strong>Microcontrast</strong> &#8211; 一个神秘的滑竿，用来在小范围内调节色彩的细节以及波动，你可以根据自己的感觉进行尝试直到找到合适的数值。</li>
<li><strong>Smoothing</strong> &#8211; 它用来控制照片的HDR程度，越往左，越迷幻。</li>
<li><strong>White Point &amp; Black Point</strong> &#8211; 调节这两个数值使得Histogram里的”钟罩”型曲线完整显示于区域内。</li>
<li>其他滑动杆？它们有各自的功效，但说实话我一般不用它们。 Micro-smoothing可以降低画面噪点，但是对于降噪我有更好的软件，后面我会介绍。</li>
</ul>
<p style="TEXT-ALIGN: center"><img src="http://farm1.static.flickr.com/52/161422541_5fc526caf2_b.jpg" style="DISPLAY: inline; WIDTH: 480px; HEIGHT: 342px" title="HDR Tutorial (by Stuck in Customs)" height="342" width="480" alt="HDR Tutorial (by Stuck in Customs)"/></p>
<p style="TEXT-ALIGN: center"><em><strong>Photomatix以及一些更合理的设置参数……</strong></em></p>
<p>完成后点击Process，最初的处理工作就完成了，下面我们需要在Photoshop进一步雕琢。</p>
<h2>步骤6 &#8211; Photoshop</h2>
<p>如你所见，Photomatix虽然很棒，但是它将照片的某些地方搞乱了，这需要我们在Photoshop里进行修正。 如下是我们所要做的几件事：</p>
<ul>
<li>导入所有原始连续曝光图（本例中是5张，-3至+3）以及在Photomatix中生成的HDR图。
<ul>
<li>请注意，在这里我们导入所有的原始图片其实是一种冗余操作，随着你经验的增长，你将有能力去选择只导入那些需要的照片。</li>
</ul>
</li>
<li>使用最暗的原始照片作为蒙板来修正HDR照片中那些过分突出的区域。</li>
<li>选择色彩最好的原始照片来修正具有”鬼影”效果的行人和车辆。</li>
</ul>
<h3>RAW Importer</h3>
<p>首先，你知道Photos的RAW Importer也可以用于JPEGE吗？千真万确！在偏好设置里File Handling条目下对其进行设置。 现在，在Photoshop中使用RAW Importer打开原始图片和HDR图片，下图所示为Photoshop的RAW导入界面，你可以使用那些滑竿来提取出额外的光照信息&#8211;而这也正是RAW格式的神奇之处，相对于JPEG，RAW可以包含额外的光照信息以供你在RAW Importer中使用。 下面我选择出我最喜爱的一张原始照片然后通过调节滑竿使其尽量逼近Photomatix生成的HDR效果，然后我将其与HDR混合从而达到下述两个目的：a) 使其看起来更为逼真 b) 修正”鬼影” 你应该导入Photoshop多少张照片？ 这取决于你想使用哪些进行混合。在本例中，我导入了其中三张，三张不同曝光的照片中，各有我希望混合的画面部分。注意，下面的步骤是”点石成金”的环节，如果你只是想使用Photomatix生成的效果，完全可以跳过这些细节的调整。 你可以看到我的设置 &#8211; 我增加了Fill Light，增加了Blacks，调节了Vibrance，Saturation，以及Clarity，你可以根据需要进行调整。</p>
<blockquote><p>Trey关于HDR摄影的不可磨灭的真理 #34：如果你在白天拍摄的照片中有蓝天，HDR的过程会使你的天空看起来发灰、斑驳，甚至出现光晕，你一定要在上传照片之前用原始照片的天空进行遮罩处理，否则后果不堪设想……</p>
</blockquote>
<p style="TEXT-ALIGN: center"><img src="http://farm1.static.flickr.com/56/161423696_f1591fc69f_b.jpg" style="DISPLAY: inline; WIDTH: 480px; HEIGHT: 312px" title="HDR Tutorial (by Stuck in Customs)" height="312" width="480" alt="HDR Tutorial (by Stuck in Customs)"/></p>
<p st<br />
yle="TEXT-ALIGN: center"><em><strong>RAW Importer</strong></em></p>
<p>Okay, moving on. Maybe you should go get another coffee or a glass of red… things are about to get juicy.</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/hdr-tutorial-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtools文件导出/保存错误“Save Error: Level”</title>
		<link>http://spotlightor.com/blog/tutorial/virtools-save-error-level/</link>
		<comments>http://spotlightor.com/blog/tutorial/virtools-save-error-level/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 13:59:41 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Virtools]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=311</guid>
		<description><![CDATA[今天导出Virtools工程为VMO时出现“Save Error: Level”这样的错误，搜索得到解决方法： 将所有贴图文件的“IC”初始状态移除即可，我的工程内有几张作为动画的序列贴图设置了IC，所以导致了这个问题。 另外，搜索中还得知如果Virtools工程文件中1024*1024这样的大贴图数量过多，Virtools工程文件过大，在保存工程文件的时候也可能出现“Save Error: Level”的错误，为工程文件减肥可以解决该问题。]]></description>
			<content:encoded><![CDATA[<p>今天导出Virtools工程为VMO时出现“Save Error: Level”这样的错误，搜索得到解决方法：</p>
<p>将所有贴图文件的“IC”初始状态移除即可，我的工程内有几张作为动画的序列贴图设置了IC，所以导致了这个问题。</p>
<p>另外，搜索中还得知如果Virtools工程文件中1024*1024这样的大贴图数量过多，Virtools工程文件过大，在保存工程文件的时候也可能出现“Save Error: Level”的错误，为工程文件减肥可以解决该问题。</p>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/virtools-save-error-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtools开发模式下Action右键子菜单消失</title>
		<link>http://spotlightor.com/blog/tutorial/virtools-action-submenu-disappear/</link>
		<comments>http://spotlightor.com/blog/tutorial/virtools-action-submenu-disappear/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 08:20:19 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Virtools]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=304</guid>
		<description><![CDATA[在Dev模式下，有时Virtools会莫名其妙地出现鼠标右键菜单中的Action子菜单消失的情况，对于经常需要使用Action VSL脚本辅助开发的人来讲，这个问题非常严重。 解决方法很简单，在注册表编辑器（开始/运行/regedit）中将如下键值设置为1即可恢复菜单显示： HKEY_CURRENT_USER\Software\Virtools\3D Layout\Enable Actions]]></description>
			<content:encoded><![CDATA[<p>在Dev模式下，有时Virtools会莫名其妙地出现鼠标右键菜单中的Action子菜单消失的情况，对于经常需要使用Action VSL脚本辅助开发的人来讲，这个问题非常严重。</p>
<p>解决方法很简单，在注册表编辑器（开始/运行/regedit）中将如下键值设置为1即可恢复菜单显示：</p>
<pre>HKEY_CURRENT_USER\Software\Virtools\3D Layout\Enable Actions</pre>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/virtools-action-submenu-disappear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学习使用C#进行Unity3D编程</title>
		<link>http://spotlightor.com/blog/tutorial/getting-started-with-c-sharp-for-unity3d/</link>
		<comments>http://spotlightor.com/blog/tutorial/getting-started-with-c-sharp-for-unity3d/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 21:03:16 +0000</pubDate>
		<dc:creator>Lancelot</dc:creator>
				<category><![CDATA[教程]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://5iistudio.cn/blog/?p=233</guid>
		<description><![CDATA[本文针对Unity3D，从AactionScript 3开发者的角度来介绍C#的特性以及与AS3的不同，如果熟悉AS3的话C#学起来并不困难。 很遗憾本文作者所推荐的C# Pocket Reference在国内还没有出版，O&#8217;Reilly几本关于C#的大部头儿著作倒是都在国内上架了，想必是因为这本书过于基础，出版社觉得无利可图吧。 版权声明：本文系原文翻译，中文版转载请保留版权信息 原文出处：Getting started with C# for Unity3D 原文作者：EveryDayFlash 中文翻译：交典创艺 Unity3D 提供了三种可供选择的脚本编程语言：JavaScript, C# 以及 Boo。尽管它们各有各的优势与不足，但对我来讲C#显然会脱颖而出成为我的首选——首选，它完整支持面向对象，而且语法与Java以及ActionScript 3很类似，而这两者都是我所熟悉的。不过在接触Unity3D之前，我一行C#的代码都没写过，所以我必须从头学起。C#由Microsoft提出并广泛使用于.NET framework以及Silverlight开发中。不过我们首先需要明白的是，学习用于Unity3D的C#并不等同于学习.NET平台，事实上你并不需要了解所有关于.NET的事情就可以使用C#为Unity3D编写脚本程序。 尽管我平时使用各种在线文档，但是一本实体书通常才是最好的助手，于是我决定买一本C#好书。O&#8217;Reilly C# Pocket Guide看起来正是我所需要的，购买一本500页的C#圣经显然是没有必要的，因为那些书中大部分内容都是与.NET相关的，根本无法与Unity3D兼容。 当然，仅仅依靠这一本书是不够的，你还需要经常查阅 Unity3D scripting reference。文档中所有的例子都是用Javascript书写的，但是不必担心，一旦你熟悉C#后将它们翻译为C#语言将轻而易举。文档中所有的例子默认都是用JavaScript写的，不过你可以在代码区域的右上角选择切换为C#或者Boo。 C#是一种非常典雅而强大的编程语言，它的dot-syntax命名法则基于Java，所以如果你具有Java编程背景将感到非常舒服。不过区别也还是有一些的，最明显的应该是在C#中属性以及方法的名称约定俗称都是以大写字母开头的。 我估计这是继承自Visual Basic的习惯，我并不是这种习惯的簇拥，但是与其反抗到底还不如接受它以保证代码的一致性。 C#的特性列表实在太长，这使得ActionScript实在是看起来有些相形见绌。 C#与Actionscript从本质上是极为相似的，我估计下一次ActionScript的升级中至少会实现C#的一些特性，因此有必要在此预先有所了解。下面是我所钟爱的一些特性。 运算符重载 这是目前为止最酷的！它允许程序员为+-*/这样的运算符定义特殊的行为。它的优势在向量加法运算中就可以明显体现出来，在ActionScript中，要计算向量之和，你需要书写类似下面的代码： var c:Vector3D = a.add(b); 这样并不是很好，在多于两个向量相加时代码的易读性会变得很差。如果在C#中重载+运算符，代码将会变成下面的形式： Vector3 c = a + b; 这样是不是可读性更好而且更为优雅呢？不用想我们就可以猜到，在Unity3D中所有向量的运算符都进行了重载。如果你希望自己实现，运算符重载也非常简单，对于上面的例子，代码大致是下面这个样子的： public static Vector3 operator + (a:Vector3, b:Vector3) [...]]]></description>
			<content:encoded><![CDATA[<p>本文针对Unity3D，从AactionScript 3开发者的角度来介绍C#的特性以及与AS3的不同，如果熟悉AS3的话C#学起来并不困难。</p>
<p>很遗憾本文作者所推荐的C# Pocket Reference在国内还没有出版，O&#8217;Reilly几本关于C#的大部头儿著作倒是都在国内上架了，想必是因为这本书过于基础，出版社觉得无利可图吧。</p>
<div class="copyright">版权声明：本文系原文翻译，中文版转载请保留版权信息<br />
原文出处：<a href="http://www.everydayflash.com/blog/index.php/2009/07/21/c-sharp-for-unity3d">Getting started with C# for Unity3D</a><br />
原文作者：<a href="http://www.everydayflash.com">EveryDayFlash</a><br />
中文翻译：<a href="http://spotlightor.com">交典创艺</a></div>
<div class="copyright">
<p><a href="http://unity3d.com/">Unity3D</a> 提供了三种可供选择的脚本编程语言<strong>：JavaScript, C# 以及 <a href="http://boo.codehaus.org/">Boo</a></strong>。尽管它们各有各的优势与不足，但对我来讲C#显然会脱颖而出成为我的首选——首选，它<strong>完整支持面向对象</strong>，而且语法与<strong>Java</strong>以及<strong>ActionScript 3</strong>很类似，而这两者都是我所熟悉的。不过在接触Unity3D之前，我一行C#的代码都没写过，所以我必须从头学起。<span id="more-233"></span>C#由<a href="http://msdn.microsoft.com/en-us/vcsharp/aa336809.aspx">Microsoft</a>提出并广泛使用于<a href="http://msdn.microsoft.com/en-us/netframework/default.aspx">.NET framework</a>以及<a href="http://silverlight.net/">Silverlight</a>开发中。不过我们首先需要明白的是，学习<strong>用于Unity3D的C#</strong>并不等同于学习.NET平台，事实上你并不需要了解所有关于.NET的事情就可以使用C#为Unity3D编写脚本程序。</p>
<p>尽管我平时使用各种在线文档，但是一本实体书通常才是最好的助手，于是我决定买一本<strong>C#好书</strong>。<a href="http://oreilly.com/catalog/9780596519223/">O&#8217;Reilly C# Pocket Guide</a>看起来正是我所需要的，购买一本500页的C#圣经显然是没有必要的，因为那些书中大部分内容都是与.NET相关的，根本无法与Unity3D兼容。</p>
<p>当然，仅仅依靠这一本书是不够的，你还需要经常查阅 <a href="http://unity3d.com/support/documentation/ScriptReference/">Unity3D scripting reference</a>。<span style="text-decoration: line-through;">文档中所有的例子都是用Javascript书写的，但是不必担心，一旦你熟悉C#后将它们翻译为C#语言将轻而易举。</span>文档中所有的例子默认都是用JavaScript写的，不过你可以在代码区域的右上角选择切换为C#或者Boo。</p>
<p>C#是一种非常<strong>典雅而强大</strong>的编程语言，它的dot-syntax命名法则基于Java，所以如果你具有Java编程背景将感到非常舒服。不过区别也还是有一些的，最明显的应该是在C#中属性以及方法的名称约定俗称都是以大写字母开头的。 我估计这是继承自Visual Basic的习惯，我并不是这种习惯的簇拥，但是与其反抗到底还不如接受它以保证代码的一致性。</p>
<p>C#的特性列表实在太长，这使得ActionScript实在是看起来有些相形见绌。 C#与<strong>Actionscript从本质上是极为相似的</strong>，我估计下一次ActionScript的升级中至少会实现C#的一些特性，因此有必要在此预先有所了解。下面是我所钟爱的一些特性。</p>
<h4>运算符重载</h4>
<p>这是目前为止最酷的！它允许程序员为+-*/这样的运算符定义特殊的行为。它的优势在向量加法运算中就可以明显体现出来，在ActionScript中，要计算向量之和，你需要书写类似下面的代码：</p>
<pre>var c:Vector3D = a.add(b);</pre>
<p>这样并不是很好，在多于两个向量相加时代码的易读性会变得很差。如果在C#中重载+运算符，代码将会变成下面的形式：</p>
<pre>Vector3 c = a + b;</pre>
<p>这样是不是可读性更好而且更为优雅呢？不用想我们就可以猜到，在Unity3D中所有向量的运算符都进行了重载。如果你希望自己实现，运算符重载也非常简单，对于上面的例子，代码大致是下面这个样子的：</p>
<pre>public static Vector3 operator + (a:Vector3, b:Vector3) {
return new Vector3(a.x + b.x, a.y + b.y, a.z + b.z);
}</pre>
<p>这其中有一些简单的规则：运算符函数永远都是静态的（static），并且需要返回它所定义的对象类型。不过它的参数可以是任何类型的，因此完全可以重载加法或乘法运算符使其支持向量与浮点数或者与矩阵的运算——而这一切都要得益于C#对运算符重载功能的支持。</p>
<h4>方法重载</h4>
<p>方法重载可以允许我们定义多个同名但参数不同的方法。它不但对一般方法起作用而且也可以应用于构造函数——如果有多种途径来初始化一个对象，那么你可以为每一种途径定义一个专有的构造函数。而且方法重载同样可以应用于运算符方法，这一点上面已经提到了。</p>
<p>在Unity3D API中一个关于运算符重载最好的例子就是&#8217;Transform.Rotate()&#8217;这个方法，它被重载了三次以满足不同的旋转参数：</p>
<pre>void Rotate (Vector3 eulerAngles, Space relativeTo)
void Rotate (float xAngle, float yAngle, float zAngle, Space relativeTo)
void Rotate (Vector3 axis, float angle, Space relativeTo)</pre>
<p>你可以指定欧拉角，也可以指定旋转轴以及旋转角度。</p>
<p>ActionScript可以使用默认参数来模拟方法重载，但是这样做并不方便也不便于理解。</p>
<h4>Getter/Setter语法</h4>
<p>C#声明参数的方法非常简明扼要，在ActionScript中需要两个方法——一个&#8217;get&#8217;一个&#8217;set&#8217;，而在C#中的代码则是这样的：</p>
<pre>public float Size { get; set; }</pre>
<p>在这种情况下，你不需要额外做任何工作编译器就会自动创建一个私有属性，当然，这样的定义没什么用处，下面列举一个稍微复杂点的，包括一个public的get以及private的set：</p>
<pre>public float Area {
get { return size * size; };
private set { size = Mathf.Sqrt(value) };
}</pre>
<p>想必你应该已经注意到了，尽管C#源自Java，在C#中却并不使用&#8217;function&#8217;和&#8217;var‘关键词——这样做之所以好是因为这两个关键词完全是冗余的病情不会为代码增加任何有价值的信息。</p>
<p>对于其他特性，我推荐看看<strong>indexers，generic types，structures以及enumerators</strong>，在上面提到的C# Pocket Book中都有详细介绍，许多C#教程中也有涉及。</p>
<h4>编辑C#</h4>
<p>很多编辑器都支持C#，微软提供的<a href="http://www.microsoft.com/express/vcsharp/">Visual C# Express Edition</a>免费而且非常好用，支持代码自动补完功能，但是只对应Windows平台（显然的）。<del>对于Mac平台<a href="http://monodevelop.com/">MonoDevelop</a>看起很强大但是还并不是很稳定。 不幸的是Eclipse的<a href="http://www.improve-technologies.com/alpha/esharp/">C# plugin</a>目前为止非常不稳定，所以我并不推荐，但好在它目前还处于Alpha阶段，我们应该再多给它一些时间。</del>（3.0版以后Unity已集成MonoDevelop，跨平台Windows和Mac均可使用，稳定性经过不断更新已日臻完美，实在是Unity C#编程的不二之选）。当然，不论如何，我们最后至少还可以求助于<a href="http://macromates.com/">TextMate</a>。</p>
<p>最后需要提到的是<strong>Unitron</strong>——Unity3D自带的默认编辑器。在开发者中间它并不怎么流行，而且我看到有人抱怨他过于基本了，我并不认同这种观点。虽然它不如<a href="http://fdt.powerflasher.com/">FDT</a>之于ActionScript那样强大，但是它非常稳定而且具备<strong>基本的代码自动补完功能</strong>——有趣的是，自动补完功能在默认设置下是关闭的（为啥？），要开启该功能需要打开&#8217;Preferences&#8217;，你会在&#8217;General&#8217;面板的底端找到这个选项，如此一来我相信Unitron还是值得一用的。</p>
<p>我们中很多人都是在<strong>浏览器环境</strong>下认识Javascript的，而Javascript也是很多人平生第一次使用的编程语言。如果是这种情况的话，你很可能会立刻开始使用Javascript进行Unity3D的编程而不必操心要学习什么新东西，毕竟，如Unity3D所说，<strong>任何使用C#可以完成的事同样可以使用Javascript完成</strong>。</p>
<p>但是从长远考虑的话，C#可以提供更好的代码管理，完整的OOP支持，strong typing以及掌握一门优秀编程语言所带来的成就感。因此，额外付出的努力是值得的，更何况，对于一个经验丰富的AS3开发者，掌握C#只是几个礼拜的事儿，现在就动手尝试一下吧！</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://spotlightor.com/blog/tutorial/getting-started-with-c-sharp-for-unity3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

