| 网站镜像:电信 网通 | 加入收藏 | 设为首页

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 、方体自己也每次进入当前帧时都旋转。