ユーザ用ツール

サイト用ツール


vci:sample:material:uvanimation

パラパラ漫画アニメーション


サンプルデータ:https://seed.online/items/4cbaeb00d4adbb4ca26947a4a874e565929e0bdd20b8af4aab5f699c68c73bc6

このサンプルは「切り替えポスター」の応用になります。
https://virtualcast.jp/wiki/doku.php?id=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90:%E5%88%87%E6%9B%BF%E3%83%9D%E3%82%B9%E3%82%BF%E3%83%BC


タイリングされたテクスチャを自動で切り替えてパラパラ漫画のようなアニメーションをさせることができます
モデルに割り当てるUVは4×4の1マス分を指定しています。
(UVの設定はblender、Mayaなどの3Dツールをご使用ください)

使用しているテクスチャは以下のように4×4に画像をタイリングしたものを
vci.assets._ALL_SetMaterialTextureOffsetFromIndex」でUVのOffset移動を行っています。

Material名を指定する「vci.assets._ALL_SetMaterialTextureOffsetFromName」でも変更可能です。
本サンプルでは「v」というMaterial名で指定できます。


左から右、上から下の順番でカウントされていきます

main.lua
local assets = vci.assets
local count = 0
 
local timecount=0
 
--共通変数による同期管理部分
if vci.state.Get("COUNT") then
    count = vci.state.Get("COUNT")
end
 
 
--全体の切り替え枚数  今回は4X4
local TOTAL = 16
 
--縦と横の分割数 4 
function SetTextureOffset( count )
    local offset = Vector2.zero
 
    -- y shift
    local Yshift = math.floor(count / 4)
    offset.y = -(1/4) * Yshift
 
    -- x shift
    local Xshift = count % 4
    offset.x = (1/4) * Xshift
 
    assets._ALL_SetMaterialTextureOffsetFromIndex(0, offset)
end
 
SetTextureOffset(count)
 
--updateAllだと処理が人数分重複するのでupdateを使用
function update()
    timecount=timecount+1
    --何フレームごとに画像を切り替えるか
    if timecount>3 then
        anim()
        timecount=0
    end
end
 
--自作関数
function anim()
    if count >= TOTAL then
        count = 0
    else
        count = count + 1
    end
    vci.state.Set("COUNT", count)
    SetTextureOffset(count)
end
vci/sample/material/uvanimation.txt · 最終更新: 2019/05/27 21:09 by navana

ページ用ツール