0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VCIアイテムの角度をバーチャルキャストのディスプレイみたいに補正をかける。

Last updated at Posted at 2020-01-11

わかりにくいかもしれないけど15度単位の角度に補正されています。
ダウンロード (1).gif

解説も面倒なので答えをぽん

ざっくり、下のコードを使えばいけるぜ!!

CorrectRotation.lua
---角度を15度単位で補正する。第2引数を1から90で指定すればその角度単位で補正する。第2引数は省略可。
---@param subItem ExportTransform
---@param degree number
local function CorrectRotation(subItem,degree)
    --degreeが数値で0<degree<=90ならdegreeの値を使う。そうでないなら15を使う。
    local localDegree = (type(degree) == "number" and 0 < degree and degree <= 90 ) and degree or 15
    --subItemの回転量をx,y,zのeuler角度で取得する。
    local subItemEuler = subItem.GetRotation().eulerAngles
    --subItemのrotationに補正をかける
    subItem.SetRotation(Quaternion.Euler(math.floor(subItemEuler.x / localDegree + 0.5)*localDegree,
        math.floor(subItemEuler.y/ localDegree + 0.5)*localDegree,math.floor(subItemEuler.z/ localDegree + 0.5)*localDegree))
end

使用例だよ

local correctSubItemName = "Item"

local correctSubItem = vci.asset.GetSubItem(correctSubItemName)

---角度を15度単位で補正する。第2引数を1から90で指定すればその角度単位で補正する。第2引数は省略可。
---@param subItem ExportTransform
---@param degree number
local function CorrectRotation(subItem,degree)
    --degreeが数値で0<degree<=90ならdegreeの値を使う。そうでないなら15を使う。
    local localDegree = (type(degree) == "number" and 0 < degree and degree <= 90 ) and degree or 15
    --subItemの回転量をx,y,zのeuler角度で取得する。
    local subItemEuler = subItem.GetRotation().eulerAngles
    --subItemのrotationに補正をかける
    subItem.SetRotation(Quaternion.Euler(math.floor(subItemEuler.x / localDegree + 0.5)*localDegree,
        math.floor(subItemEuler.y/ localDegree + 0.5)*localDegree,math.floor(subItemEuler.z/ localDegree + 0.5)*localDegree))
end

---[not SubItemの所有権&Grab状態]アイテムをUngrabしたときに呼ばれる。
---@param target string @UngrabされたSubItem名
function onUngrab(target)
    if target == correctSubItemName then
        CorrectRotation(correctSubItem)
    end
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?