当前位置:软件学习 > Director >>

Director 3D 基础(5)

Director 3D 基础
     七、添加贴图( texture )

添加了材质球之后,点击字样为 “Add Texture” 的文本运行建立贴图的行为。脚本如下:

on mouseUp(me)
if voidP(sprite(1).member.shader(‘‘newTexture‘‘)) then
tSprite = sprite(1)
tMember = tSprite.member
tTexture = tMember.newTexture(‘‘newTexture‘‘, \
#fromCastMember, member(‘‘Colors‘‘))

tMember.model(‘‘newSphere‘‘).shader.texture = tTexture
tMember.model(‘‘newSphere‘‘).shader.textureMode = #none
go next
end if
end

脚本流程:
1 、确定是否有贴图加于球体上了。
2 、如果没有,脚本使用原先已经被创建的名称叫 “Colors” 的位图演员创建一个新的贴图。
3 、然后脚本应用贴图于材质球中,于是就显示在球体的表面上。
4 、材质球的 textureMode 属性被设为 #none ,结果是贴图被应用于没有特别设定的状态。

八、使球体运动起来

添加了贴图之后,点击字样为 “Set the Sphere in Motion” 的文本运行旋转程序。脚本如下:

property pActive

on beginSprite(me)
pActive = FALSE
end beginSprite

on mouseUp(me)
pActive = TRUE
go next
end

on enterFrame(me)
if pActive then
tSprite = sprite(1)
tMember = tSprite.member
tMember.model(‘‘newSphere‘‘).rotate(0,0,-5)
end if
end

脚本流程:
1 、当用户点击文本时,脚本把 pActive 的值设为 TRUE ,就可以使球旋转起来。
2 、然后脚本设定每次进入当前帧时都使球旋转 5 个单位。

九、添加一个方体

当球开始旋转起来之后,点击字样为 “Create Box” 的文本运行创建方体程序添加一个简单的方体。脚本如下:

on mouseUp(me)
if voidP( sprite(1).member.model(‘‘newBox‘‘)) then
tSprite = sprite(1)
tMember = tSprite.member
tTempModel = tMember.newModel(‘‘newBox‘‘)
tBoxResource = tMember.newModelResource \
(‘‘newBoxResource‘‘, #box)

tBoxResource.width = 20
tBoxResource.height = 20
tBoxResource.length = 20
tBoxResource.left = 1
tBoxResource.right = 1
tBoxResource.top = 1
tBoxResource.bottom = 1
tBoxResource.front = 1
tBoxResource.back = 1
tTempModel.resource = tBoxResource
tTempModel.parent = tMember.group(‘‘world‘‘)
tTempModel.addToWorld()
tCenterPoint = point(sprite(1).width/4, sprite(1).height/3)
tPointToVector = tSprite.camera.spriteSpaceToWorldSpace \
(tCenterPoint - point(tSprite.left, tSprite.top))

tMember.model(tTempModel.name).transform.position = \
tPointToVector
go next
end if
end

脚本流程:
1 、创建一个名叫 “newBox” 的模型。
2 、然后建立一个类型为 “#box” 的模型资源。由于方体是原始的基本的形状,所以可以在空的 3D 世界凭空创建它。
3 、脚本然后给模型资源添加一个尺寸,以标明方体的各个侧面与边。
4 、这个新的模型资源被应用于 “newBox” 模型上。
5 、这个模型被添加进 3D 世界并指定为这个 3D 世界的子对象。
6 、模型被指定在一个 3D 世界里的位置。

在这儿,缺省的材质球被使用,没有用上贴图。

十、使方体运动起来

最后,方体被加上运动。点击字样为 “Orbit Box” 的文本运行环绕运行方体程序。脚本如下:

property pActive

on beginSprite(me)
pActive = FALSE
end beginSprite

on mouseUp(me)
tSprite = sprite(1)
tMember = tSprite.member
tMember.model(‘‘newBox‘‘).parent = tMember.model(‘‘newSphere‘‘)
pActive = TRUE
go next
end

on enterFrame(me)
if pActive then
tSprite = sprite(1)
tMember = tSprite.member
tMember.model(‘‘newBox‘‘).rotate(0,20, 25)
end if
end on

简介环绕运行方体程序所做的:

1 、当鼠标点击在字样为 “Orbit Box” 的文本上时,方体被指定为球体的子对象。由于球体是不停旋转的,这就造成方体开始环绕球体,以对应于球体不停修正的位置变化。(也是就说方体与球体好象有无形的棒连在一起了,不但距离保持不变,而且表面相对的位置与不变,如在本例中球体对着方体的那一面永远不变。)
2 、方体自己也每次进入当前帧时都旋转。

[1] [2] 下一页  

[page_break]

上一页  [1] [2] 

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,