Git Product home page Git Product logo

dietshaper's People

Contributors

chigirits avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

dietshaper's Issues

ポリゴン削除するとUVが異常になる

  • Unity 2019.4.29f1、うみちゃん umi_0.0.0 で発生
  • Remove Threshold でポリゴン削除するとUVが異常となり(?)、テクスチャマッピングが正常に行われない
  • シェイプキーとして適用するだけだと起こらない

関節を含むボーンへの吸着

前提

  • P:処理対象の頂点
  • B0, B1, B2:ボーン(B1は関節)
  • P':求める吸着位置

fig

平面への投影

  1. 平面 B₀B₁B₂ の法線 N を、外積 B₁B₀×B₁B₂ から求める。

  2. 平面上の座標空間を以下のように定義する。

    • B₁ を原点 O とする
    • B₁B₀ の単位ベクトルを取り、その方向を𝓍軸とする
    • 𝓍軸を N の周りに反時計回り90度回転した方向を𝓎軸とする
  3. P から平面への垂線の足を Pₚ とする(Vector3.ProjectOnPlane を用いて B₁P を投影する)。

  4. 平面上の𝓍・𝓎軸単位ベクトルとの内積から、平面上での B₀, B₂, Pₚ の座標を求める。

これ以降の計算は平面上の座標を用い、できれば double 型で行う。

C の算出

  1. 次の2直線の交点を C とする。

    • B₀ を通り B₀O と垂直な直線:𝓍 = B₀x
    • B₂ を通り B₂O と垂直な直線:𝓎-B₂y = (-B₂x/B₂y)(𝓍-B₂x)
  2. 上記2直線の式を連立方程式として解き、C の座標を求める。

    • Cx = B₀x
    • Cy = (-B₂x/B₂y)(B₀x-B₂x) + B₂y

B₀, B₂ のどちらに近いかを判定

  1. 外積 CO×CPₚ の符号から、Pₚ が OC を隔てて B₀, B₂ のどちら側に属するかを判定する(属する方のボーンを B とする)。

r の算出

  1. Pₚ から CB への垂線の足 F を求める(CB の単位ベクトルを I とすると、CF = CPₚI)。
  2. FPₚ と CO の交点 G を求める(CG = (CF/CB)CO)。
  3. r = GPₚ / GF = △CGPₚ / △CGF = |CG×CPₚ| / |CG×CF| を求める(分母・分子の符号が逆の場合は範囲外のため中断)。

ここからまた3次元空間上での計算に戻る。

P' の算出

  1. B₁B の r : 1-r の内分点として P' を求める。

AnimationCurveのアサーション

LSBodyでSpineを追加、Start Margin を 0.499 にして処理すると以下のログが大量に出る

Assertion failed on expression: 'curveT >= GetRange ().first && curveT <= GetRange ().second'
Assertion failed on expression: 'curveT >= m_Curve[lhs].time && curveT =< m_Curve[rhs].time'

SkinnedMeshRendererのFBX内初期Scale/Rotationを考慮

大半のアバターは (1,1,1) なので、以下の箇所でそのように調整している。

var avs = p.avatarRoot.transform.lossyScale;
var l2ws = p.targetRenderer.localToWorldMatrix.lossyScale;
var rescale = new Vector3(l2ws.x/avs.x, l2ws.y/avs.y, l2ws.z/avs.z);

if (p.adjustScale) w.Scale(rescale);

そうでないアバター(うみちゃん等)もあるので、その場合はFBXから初期Scaleを調べる必要がある
(または SkinnedMeshRenderer.Bake を用いてベイクした頂点から逆算する?)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.