当前位置:非凡站长站文章教程Director教程 → 文章内容

Director 3D 基础(之五)

减小字体 增大字体 作者:未知  来源:pconline.com.cn  发布时间:2006-4-21 16:10:51
作者:十年磨一剑
出处:奥古多媒体
转载请联系作者

用lingo来把2D字体延展成3D字体

Macromedia Director 8.5 Shockwave studio允许你在你的影片中用以下两种方法创建3D文本:
1、把2D演员延展成3D文本。
2、延展文本进3D世界。
虽然你可以利用这两种方法来获得类似的“看”到的效果,但由于它们是用不同的方法来改变文本的,所以它们是有不同的优点的。

一、延展2D演员成3D文本

当你延展2D演员成3D文本,显示2D文本为3D模式,既可以使用Lingo也可以使用属性检查员来指派3D属性给一个2D文本。显示3D文本需要Text Asset Xtra、3D Asset Xtra和Font Xtra,这些都是在安装Director 8.5时已经一起安装了的。
当一个文本演员以3D模式显示并在舞台上有一个精灵时,这个精灵就是一个3D精灵(还成了一个有自己独立的摄像机与灯光属性的3D世界),不是一个2D“普通”的文本精灵。你可以切换文本于2D与3D模式之间。如果是从3D切换到2D,这个精灵的3D Asset和一些3D属性就会删除掉,并且舞台上的精灵就会回复为一个普通的2D文本精灵。然而,位置、材料属性和灯光信息还是会保存在文本演员中。
要显示2D文本于3D模式,你必须设置2D文本属性如字体大小与样式,然后设置3D文本属性如斜面类型和斜面厚度、字的厚度、字的光滑程序。
二、延展文本进3D世界

当你直接延展文本进3D世界,你也要设置文本演员的属性,如字体大小与样式,然后使用Lingo延展文本。然而你还有切换2D与3D之间的选择权。一旦文本被延展进3D世界,你还可以象移去世界中的其它模型一样移去它的。
延展文本进3D世界的一个优点是文本中的每个字符都有自己的材质球,并且3D文本属性包括一个材质球列表。你可以利用材质球列表单独地改变每一个字符。例如,你可以选择某个字符运运起来,其它不运动,也可以只为某个字符加上色彩。

三、观看样版影片

样版影片3DText1说明如何把2D文本显示为3D模式,样版影片3Dtext2说明如何延展文本进3D世界。

四、3DText1

当你打开3DText1影片,你可以看到舞台上有一个由名叫“textSample”扮演的精灵。这个演员的文字是“Director 3D”。当影片播放时,你可以切换文本于2D与3D模式之间,你可以使用舞台左边的按钮来应用不同的设置并看这些设置是如何影响这个文本的。
每个属性按钮包括一个行为脚本以调用影片程序中的一个事件(句柄)。
要查看完整的影片程序,打开Script window然后去到Movie Script 5。
在影片程序中,以下的事件指定了模型(文本)位置以及摄像机位置与旋转角度。transform属性包括旋转和位置两个子属性。

on startMovie

if member(‘‘textSample‘‘).displayMode = #mode3d then
member(‘‘textSample‘‘).model[1].transform.position = vector(-190, -5,0)
member(‘‘textSample‘‘).camera(‘‘DefaultView‘‘).transform.position = vector(81, 21, 90)
member(‘‘textSample‘‘).camera(‘‘DefaultView‘‘ ).transform.rotation = vector(-3, 0, 0)

end if
end
以下的事件显示在文本演员中的当前的3D文本属性调用的内容:

on setComment
member(‘‘comment‘‘).text = ‘‘3d Text‘‘ & RETURN & \
‘‘bevelType = ‘‘ && member(‘‘textSample‘‘).bevelType & RETURN & \
‘‘bevelDepth = ‘‘ && member(‘‘textSample‘‘).bevelDepth & RETURN & \
‘‘tunnelDepth = ‘‘ && member(‘‘textSample‘‘).tunnelDepth & RETURN&\
‘‘smoothness = ‘‘ && member(‘‘textSample‘‘).smoothness & RETURN & \
‘‘displayFace = ‘‘ && member(‘‘textSample‘‘).displayFace
end

点击舞台上的按钮调用的不同事件。当你点击“Toggle 3D”按钮,以下这个切换2D与3D模式的事件会通过改变displayMode属性来实现。

on toggle3d
if member(‘‘textSample‘‘).displayMode = #modeNormal then
member(‘‘textSample‘‘).displayMode = #mode3d
member(‘‘textSample‘‘).model[1].transform.position = vector(-190, -5,0)

member(‘‘textSample‘‘).camera(‘‘DefaultView‘‘ ).transform.position = vector(81, 21, 100)
member(‘‘textSample‘‘).camera(‘‘DefaultView‘‘ ).transform.rotation = vector(-3, 5, 0)

setComment
else
member(‘‘textSample‘‘).displaymode = #modeNormal
member(‘‘comment‘‘).text = ‘‘2d Text‘‘
end if

end

以下事件设定3D文本的侧面(斜面)效果,象倾斜、圆与没有效果。

on setBevelType
if member(‘‘textSample‘‘).bevelType = #none then
member(‘‘textSample‘‘).bevelType = #miter
setComment

else if member(‘‘textSample‘‘).bevelType = #miter then
member(‘‘textSample‘‘).bevelType = #round
setComment

else if member(‘‘textSample‘‘).bevelType = #round then
member(‘‘textSample‘‘).bevelType = #none
setComment

end if
end

以下的事件设定字的前面与背面的倾斜数值。这个厚度的数值从1一直提升到15,然后会返回到1。

on setBevelDepth
if member(‘‘textSample‘‘).bevelDepth < 15 then
member(‘‘textSample‘‘).bevelDepth = member(‘‘textSample‘‘).bevelDepth + 1

setComment
else
member(‘‘textSample‘‘).bevelDepth = 1
setComment

end if
end

以下的事件设定字的厚度。这个数值从10一直提升到100,然后会返回到10。

on setTunnelDepth
if member(‘‘textSample‘‘).tunnelDepth < 100 then
member(‘‘textSample‘‘).tunnelDepth =
member(‘‘textSample‘‘).tunnelDepth + 10
setComment

else
member(‘‘textSample‘‘).tunnelDepth = 10
setComment
end if
end

以下的事件设定字的光滑程序和3D字的弯曲角度。当你点击“Display Smoothness”按钮时,数值会返回到1。

on setSmoothness
if member(‘‘textSample‘‘).smoothness < 10 then
member(‘‘textSample‘‘).smoothness = member(‘‘textSample‘‘).smoothness + 1

setComment

else
member(‘‘textSample‘‘).smoothness = 1
setComment
end if
end