Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
 123456
78910111213
14151617181920
21222324252627
2829     
<< February 2016 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Sponsored Links
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2022.03.28 Monday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
            
2016.02.28 Sunday
行列、MvpMatrix(モデル行列、ビュー行列、プロジェクション行列)について


行列、MvpMatrix(モデル行列、ビュー行列、プロジェクション行列)について
https://wgld.org/d/webgl/w013.html

一つ目はモデル変換行列で、DirectX などではワールド変換行列とも呼ばれるものです。モデル変換行列はその名のとおり、描画されるモデルに対して影響を与えます。モデルの位置、モデルの回転、モデルの拡大縮小(スケーリング)に関する情報を持たせるのが普通です。

二つ目はビュー変換行列です。これはわかりやすく言うと三次元空間を撮影するカメラを定義するためのものですね。カメラの位置、カメラの注視点、カメラの上方向を定義することで、カメラがどのように振舞うのかを決めます。

三つ目はプロジェクション変換行列です。この座標変換ではスクリーンの縦横比や、クリッピング領域などを定義します。また遠近法のような効果を得るためにもこの変換行列が必要になります。

■モデルは--------------------------------------
minMatrix.js : create
構文  : matIV.create()
引数  : なし
戻り値 : 行列(に見立てた配列)
4 x 4 の正方行列を生成します。内部的には 16 の要素を持つ Float32Array オブジェクトで、全ての要素は 0 で初期化されています。
■ビューは--------------------------------------
minMatrix.js : lookAt
構文 : matIV.lookAt(eye, center, up, dest)
引数 : eye > カメラの位置を表すベクトル
引数 : center > カメラの注視点を表すベクトル
引数 : up > カメラの上方向を表すベクトル
引数 : dest > 演算結果を格納する行列
ビュー変換行列を生成します。eye にカメラの三次元空間上の位置を指定し、center はそのカメラが見つめる注視点を指定します。up にはカメラの上方向を表すベクトルを与えます。各ベクトルは三つの要素を持つ配列として渡します。演算結果は dest に出力されます。

■プロジェクションは--------------------------------------
minMatrix.js : perspective
構文 : matIV.perspective(fovy, aspect, near, far, dest)
引数 : fovy > 視野角 field Of View 
引数 : aspect > スクリーンのアスペクト比
引数 : near > ニアクリップ
引数 : far > ファークリップ
引数 : dest > 演算結果を格納する行列
プロジェクション変換行列を生成します。尚、ここで生成されるのは一般的には[ 透視射影 ]と呼ばれる射影変換行列で、いわゆる遠近法の効果が現れます。fovy には視野角を度数法で、aspect にはスクリーンのアスペクト比(幅÷高さ)を、near には前方クリップ位置(必ず 0 より大きな数値を指定)を、far には後方クリップ位置(任意の数値)を指定します。演算結果は dest に出力されます。


■行列の掛け合わせ順序
モデル変換行列に移動成分を与える例
var Matrix = m.identity(m.create());
m.translate(Matrix, [1.0, 0.0, 0.0], Matrix);

このようなコードが実行されると、配列 Matrix には X 方向へ 1.0 移動したモデル変換行列が入っている状態になります。同様に、回転やスケーリングなどを行うことが可能です。
ただし、ここで注意点があります。それは、移動・回転・拡大縮小を行なう順序です。移動してから回転するのと、回転してから移動するのでは、結果がまるで変わってきます。これは、回転が原点(0.0, 0.0, 0.0)を中心に行なわれるためです。モデル変換を行なう順序には十分に気を配りましょう。

具体的には、拡大縮小 > 回転 > 移動、という順序で変換を行なうようにすることで、回転・拡大縮小した状態のモデルを任意の位置に移動させることができるはずですね。
ただし、これで話は終わりません。

OpenGL は行列が 「列オーダー」になっているため、掛け合わせる順序が真逆になります。これは行列の計算方法をしっかり勉強するとわかることなのですが、列オーダーと行オーダーでは、掛ける順序が逆になってしまうのですね。
つまり、先ほどのように拡大縮小 > 回転 > 移動という順序で掛け合わせると結果は意図したものとは全く違うものになってしまいます。

つまり、正確には[ 移動 > 回転 > 拡大縮小 ]という順序で掛け合わせればいいことになります。順序に注意しながら、目的のモデル変換行列を生成しましょう。

■モデル・ビュー・プロジェクションの三つの行列を掛け合わせる順番
座標変換行列は、モデル・ビュー・プロジェクションの頭文字を採って mvpMatrix などと表記されることが多いのですが、掛け合わせる順序は mvp ではなく、

p > v > m の順序で掛け合わせます。
プロジェクション(画角など)>ビュー(カメラ向き)>モデル の順でかける

minMatrix.js を用いた場合のコードの一例を示すと次のようになります。

// 各種行列の生成と初期化
var mMatrix = m.identity(m.create());   // モデル変換行列
var vMatrix = m.identity(m.create());   // ビュー変換行列
var pMatrix = m.identity(m.create());   // プロジェクション変換行列
var mvpMatrix = m.identity(m.create()); // 最終座標変換行列

// 各行列を掛け合わせる順序を示す一例
m.multiply(pMatrix, vMatrix, mvpMatrix(出力)); // p に v を掛ける
m.multiply(mvpMatrix, mMatrix, mvpMatrix(出力)); // さらに m を掛ける

でそれを
頂点シェーダのソースで使います。

VBO ( vertex buffer object )頂点バッファを掛け合わせます。
https://wgld.org/d/webgl/w009.html

頂点が[ 位置座標 ]と[ 法線 ]と[ 色 ]を持っている場合は、
VBO(頂点バッファ)配列 は三つ必要
になります。

頂点の各情報をいったん配列に格納
WebGL のメソッドを使って VBO を生成
WebGL のメソッドを使い VBO に配列のデータを転送
頂点シェーダ内の attribute 変数と VBO を紐付ける


attribute vec3 position;//VBO ( vertex buffer object )頂点バッファ
uniform   mat4 mvpMatrix;

void main(void){
    gl_Position = mvpMatrix * vec4(position, 1.0);
}

Unityの場合################################################
この定数は
自動ロードされます。

現在のモデルマトリックス
float4x4  _Object2World;//      Model
現在のビュー行列。 
float4x4  UNITY_MATRIX_V;//     View
現在の投影行列 
float4x4  UNITY_MATRIX_P;//     Projection

もっといろいろあります
ビルトインのシェーダー変数
http://docs.unity3d.com/ja/current/Manual/SL-UnityShaderVariables.html


参考
UnityでShaderの入力パラメータとして行列を渡す
http://blog.negativemind.com/2015/01/30/unity-shader-properties-matrix/

CS Code
Matrix4x4 _mv 
Material.SetMatrix("_mv行列", _mv);

http://forum.unity3d.com/threads/how-to-set-matrix-as-a-property.68245/

Shader Code
uniform float4x4 _mv;//float4x4 という型がある。

参考:
http://qiita.com/edo_m18/items/b0670b0274742fa1714e
Shader "GrapicsBlit"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        // No culling or depth
        Cull Off ZWrite Off ZTest Always

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma vertex vert

            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            //------------------------------------------------
            uniform float4x4 _mv;
            //------------------------------------------------
            uniform float _Timer;//ビルトインのシェーダー変数
            //http://docs.unity3d.com/ja/current/Manual/SL-UnityShaderVariables.html
            v2f vert (appdata v)       //頂点シェーダ
            {
                v2f o;
                ///////////////////////////////////////////////////////////////////////

                // 各行列を掛け合わせる順序を示す一例

                //現在のモデルマトリックス
                float4x4  mMatrix_Object2World;//      Model
                //現在のビュー行列。 
                float4x4  vMatrixUNITY_MATRIX_V;//     View
                //現在の投影行列 
                float4x4  pMatrixUNITY_MATRIX_P;//     Projection
                //p*v*m  //この逆順番にするのが重要
                float4x4 vpMatrix=mul(pMatrixvMatrix); // p に v を掛ける
                float4x4 mvpMatrix=mul(vpMatrixmMatrix); // さらに m を掛ける

                //o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
                o.vertex = mul(mvpMatrix, v.vertex);
                o.uv = v.uv;


                ////////////////////////////////////////////////////////////////////////
                //行列へのかけざんにはHLSLではmulを使う---------------http://dench.flatlib.jp/opengl/glsl_hlsl
                //(HLSL) mul(matrix,vector)=(GLSL+metal)matrix * vector NG
                o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);  //OK
                //o.vertex = UNITY_MATRIX_MVP * v.vertex//エラー(GLSL+metal) NG
                o.vertex = mul(o.vertex , fixed4(_Time.yyy / 2, 1));//  配列に時間をかけて増やしてみた。OK
                o.uv = v.uv;
                return o;
            }
            sampler2D _MainTex;
            fixed4 frag (v2f i) : SV_Target      //ピクセルシェーダ
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                fixed4 black = 1 - fixed4(_Time.yyy / 2, 1);
                col *= black;
                return col;
            }
            ENDCG
        }
    }
}

cs
using UnityEngine;
using System.Collections;

public class GraphicsBlit : MonoBehaviour {
    public Shader GraphicsBlitShader;
    public Material GraphicsBlitMaterial;
    public Texture GraphicsBlitTexture;
    // Use this for initialization
    void Start () {
        //GraphicsBlitShader=Shader.Find("GraphicsBlit");
        GraphicsBlitMaterial.shader=GraphicsBlitShader;
        GraphicsBlitMaterial.mainTexture=GraphicsBlitTexture;
    }
    
    // Update is called once per frame

    void OnRenderImage(RenderTexture src, RenderTexture dest) {
        Graphics.Blit(src, dest, GraphicsBlitMaterial);
    }
}



 
| whaison | Unity3d | 14:08 | comments(0) | - | pookmark |
            
2016.02.25 Thursday
surface shader show generated code


IMG_1942.PNG


むだ話をするUnity Shaderのシリーズの8:#pragmaは指令します

GGPROGRAMCGとHLSLなどの言語に第3節のShaderの土地上の言語たち中に話したことがある ... ENDCGの語句塊中。この主役の#pragmaの現れの位置はすぐこの語句塊中にあって、指示を訳すことを編集するために用います。あたかも教えることに就きます
Shaderlabのあみは器を訳して、あなたはそんなにするべきことをこんなにするべきです。こちらは#pragmaを握って指令を訳すことを編集することと呼ばれるでしょう。

CGPROGRAM ... ENDCGの語句塊根はShaderlabに基づいて方式相違を執筆して、それの位置は同様に違っています。

  • もしsurface shaderなら、それがSubshaderの語句塊中にあって、Passの語句塊中にそうでないです
  • もしvertexであり&&framgment shader、それはPassの語句塊中で

実はsurface shaderの最終はvertexに訳すことを編集することができて&&framgment shaderは、最終は結局同様です。surface shaderはあみにいくつかのPassを含むvertexに訳されることができて&&fragment shaderは、これは全て同様のあみで指令を訳す。私たちはInspectorからのshader
属性情報中はあみにvertexに訳されることを開けに行って&&fragment shader後のコード。

surface shader

もし自身はsurface shaderでない場合は、上面のあのshow generated codeのボタンは現われることができない。上面は#pragmaに言及することはCGPROGRAMにあります ... ENDCGの語句塊中で、だからそれは現われた位置は同様に上面言及した特徴に合う。

Surface Shaderのあみは指令を訳します

この類のshaderは明示しなければいけないです

  • surfaceFuctionは何かです
  • 模型を世話することは何かです

文法はそうです

#pragma surface surfaceFunction lightModel [optionalparams]

上面文法から知ることができる、それが少し選ぶことができるパラメーター。具体的にこのページを参考にします

偽コードは恐らくそのようにして:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Shader”shaderの名前”

Subshader {
// CGPROGRAM ... ENDCGがSubshader中にあります
CGPROGRAM

//surfaceFunctionはsurfで、
//光模型はStandardで
// [...パラメーターを選ぶことができることを示して
#pragma surface surf Standard [...]


// surfaceFunction
void surf () {

}

ENCG
}
}

Vertex&&Fragment Shaderのあみは指令を訳して

こちらの順序集合は3類を分けて:

具体的にこのページを参考にします

偽コードは恐らくそのようにして:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Shader”shaderの名前”

Subshader {

pass {
// CGPROGRAM ... ENDCGがPass中にあります
CGPROGRAM

//vertex shaderの関数はvertで
#pragma vertex vert

//fragment shaderの関数はfragmentで
#pragma fragment frag

vert() {

}

frag () {

}

ENDCG
}
}
}

コード中のvertex shaderとfragment shaderは道中の位置を管理してこのシリーズ文章の第2節を参考にしなさい配管を大げさに表現することを大げさに表現しています。



無知で粗野な人浅学非才は、出入した場所が非常に有り難い事に手伝って誤りを指摘することができることがあります。:)

iPhoneから送信
| whaison | Unity3d | 23:28 | comments(0) | - | pookmark |
            
2016.02.24 Wednesday
Unity5.3.2 Strip Engine Codeの挙動 iOS Build on XCode:WARNING: Shader Unsupported: 'Hidden/Dof/DX11Dof' - Pass '' has no vertex shader
Unity5.3.2 Strip Engine Codeの挙動 iOS Build on XCode:WARNING: Shader Unsupported: 'Hidden/Dof/DX11Dof' - Pass '' has no vertex shader

XcodeでiOSビルド時に被写界深度用 Depth Of Field shader for DirectX11 
WARNING: Shader Unsupported: 'Hidden/Dof/DX11Dof' - Pass '' has no vertex shader
WARNING: Shader Unsupported: 'Hidden/Dof/DX11Dof' - Setting to default shader.

このこ。スタンダードアセットでカメラに被写界深度Depth Of Field をつけようとするとこのこImportすることになるんだけど。
Assets/Standard Assets/Effects/ImageEffects/Shaders/_DepthOfField/DepthOfFieldDX11.shader

いらないものがビルドに含まれていたのでXcodeエラーしていた実機ビルドが可能になるように 
BuildSetting>PlayerSetting>Strip Engine Codeからチェックを外し



Assets/link.xmlを記述してストリップしないコンポーネントを指定


<linker>
       <assembly fullname="UnityEngine">
               <type fullname="UnityEngine.TouchScreenKeyboard" preserve="all"/>
               <type fullname="UnityEngine.SystemInfo" preserve="all"/>
       </assembly>
</linker>

http://tsubakit1.hateblo.jp/entry/2015/12/16/233336
| whaison | Unity3d | 12:28 | comments(0) | - | pookmark |
            
2016.02.17 Wednesday
Maya aimCamera Motion To Unity Camera Motion.mel マヤのカメラのモーションをUnityに持っていく流れのmel
Maya aimCamera Motion To Unity Camera Motion.mel マヤのカメラのモーションをUnityに持っていく流れのmel
-------
>camera1_group
>    camera1
>    camera1_aim

>camera1_group とありますが、これ、カメラグループっていうんですか。
>カメラとエイムをぶら下げるためのただの親という。 普通にトランスフォームできるしキーも打てるので、きっとそうですよね。
↑コレ罠です。原点から動かさない方が無難です。特に回転とかさせるとそれはもう恐ろしいことになります。
参照:http://junkithejunkie.cocolog-nifty.com/blog/2014/03/post-c74a.html
----------




Ref  
参考http://www.slideshare.net/nyaakobayashi/mayaunity

参考データ
http://www.mediafire.com/download/ciis0745g81dmnu/AOV_FOV100304_2.zip

テストに使ったシーンやmel
http://www.mediafire.com/download/6ds5ameazb2wqh5/MayaCameraToUnityZIP.zip
| whaison | MEL(Maya Embedded Language) | 19:45 | comments(0) | - | pookmark |