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
1234567
891011121314
15161718192021
22232425262728
293031    
<< December 2019 >>
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
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2017.02.04 Saturday
Unityのマルチスレッドとマルチスレッドの理解 の 翻訳

中国のシーナさんのブログ (2014年11月16日午前0時07分23秒)

http://blog.sina.com.cn/s/blog_930ffa0b0102v4f0.html

Unityのマルチスレッドとマルチスレッドの理解 の 翻訳 中国語の文章の 翻訳結果が日本語になってない。またこんど

 

==================再現アドレス=============================
再版Xiaokeの翻訳で中国語の翻訳アドレス、vr.cn:http://blog.1vr.cn/?p=624
英語元のアドレス、外国人のブログには、壁の上に開けないでください。: http://unitygems.com/threads/

 

 

https://unitygem.wordpress.com/​​
==================再現アドレス=============================

================================================= ========= 
ABMEXパンチを再現
「Unity3D「チュートリアル・カレッジ「ユニティ」マルチスレッドの制限

http://blog.sina.com.cn/s/blog_930ffa0b0102v9ll.html 
=========== =============================================== 

=== ================================================== =====

マルチスレッドの非同期のC#のhttp unity3d機能の使用ダウンロードリソース

http://www.cnblogs.com/U-tansuo/p/unity3d_Threading_AsyDown_HTTP.html#undefined 
============================= ============================= 

===================== ===================================== 
マルチスレッドプラグインで共有U3Dの使用:
LOOMマルチスレッド:http://www.u3dchina.com/t-6357-1-1.html

UniExten 2.14:http://www.u3dchina.com/t-6300-1-1.html

================================================== ========
 

あなたがゲーム内で複数のスレッドを使用する場合は、

 

この記事をお読みください、

スレッドは非常に複雑なトピックですが、

 

あなたはそれを習得場合は、

簡単に複数のハードウェアプロセッサを使用することができたり、

処理、管理を分割することは困難ですデータ・ブロック。

 

大量のデータを計算するために、A *アルゴリズムとのシーンのように。


変形グリッド多数の頂点を操作してください。


サーバーにデータをアップロードするために実行し続けた。
次元コード認識や他の画像処理。

この場合は、同時にあなたは多くのことやユニティに対処する必要が小さなオブジェクトは、

そうでなければコルーチン、スレッドと対話することができます

 

スレッドは、

プログラム内の他のスレッド並行して実行されている。

マルチプロセッサコンピュータでは、

同時に複数のスレッドを

複数のスレッドを実行することができ、

 

より多くの処理コアをに依存しています。

 

Unityのプログラムは、

あなたのコードを実行するために、メインスレッドが常にあるときは、

追加のスレッドを作成することができ、 メインスレッドは同時に実行されています。

メインスレッドのUnityコンポーネント、オブジェクト、およびUnityシステムからのアクセスのみを呼び出すとUnityは、

あなたが第二のスレッドでこれらの項目にアクセスしようとすると失敗し、

エラーがスローされますすることができます

これは真剣に制限です。

あなたがコードを書くときに、

あなたが関数を開始した後にreturnして、それはあなたが同じことを実行し、

別の関数を実行することをポイントに到達したと思いますが、あなたがコードを実装することを決定し、

対応するオペレーティングシステムを変更しませんでしたいつでもあなたのコードだけ一時的に「スリープ」出て、その後、他のコードが実行されてみましょう、

この例では、値がCPUにロードされる最初のスレッドが1000を引いAの値とを読み取るために第2のスレッド後に中断1を準備するために登録し、その後、-950である必要があります。今最初のスレッドが再開され、それは50 + 1がAに格納されているレジスタになり、51になった、と-950は失われています。

基本的に、あなたが起こらないことを確実にするために、多くの予防策を取るために、変数やメモリにアクセスする複数のスレッドを同時に使用する場合。

だから、Unityは、ちょうどすべてのシステムを回避するために、有効ではありません別のスレッドやメモリからこれらの変数にアクセスすることを決定し、フレームワークは、問題オブジェクト。

だからために1つのスレッドのみ変数を変更することを確認してください、これはあなたが動作するように複数のスレッドを使用することはできませんという意味ではありません、あなたがこの問題を解決するために、「並び替え」を使用することができます。

彼らは、オブジェクトがロック型値(値型)またはプロトタイプ(原始的)であると言うことができないため、1つのスレッドだけここで一定時間内に特定のオブジェクトにアクセスできることを確実にするためにC#のlockキーワードがあります。

-----------------------------------------

int a = 50;

)object guard = new object();

void ThreadOneCode()
{
//この中でいくつかのコード

lock(guard)
{
a = a + 1;
}

//このの残りの部分でいくつかのコード

}

void ThreadTwoCode()
{
//この中でいくつかのコード

lock(guard)
{
a = a - 1000;
}

//この残りの部分でいくつかのコード

}

-----------------------------------------
すべてはそれがガードを介してアクセスされると同時に1つだけのスレッドを保証するために、ガードにロックされている。あなたは、任意の適切なオブジェクトを使用することができます。

今、あなたは、さまざまな問題を有していてもよく、例えば、あなたが相互に入れ子にすることができる複数の事をロックする。その後、我々はどのように行うのですか?

あなたは簡単に別のスレッドでコードを実行することができるように、我々は、このクラスの織機を呼び出します

注意すべき2つの特徴があります。

RunAsync(アクション) -別のスレッド上で実行されるコードのセット。
QueueOnMainThread(アクション、[オプション]フロート時間) -ステートメント(オプション遅延)のメインスレッドで実行されます。

Loom.Currentアクセスでインタラクティブなゲームのメインスレッドに対処するための目に見えないゲームオブジェクトを作成しLoom-。

次の例では、乗算結果の頂点のすべてを更新するために、グリッド織機を使用しています。

 

-------------------------------------------------2

//第二のスレッドでScaleグリッド
void ScaleMesh(Mesh mesh, float scale)
{
//メッシュの頂点を取得します。
var vertices = mesh.vertices;
//アクションで新しいスレッドを実行します。
Loom.RunAsync(()=>{
//すべての頂点を通る//ループ
for(var i = 0; i < vertices.Length; i++)
{
//頂点をスケール
vertices[i] = vertices[i] * scale;
}
//メインスレッド上のいくつかのコードの実行
//グリッドを更新します
Loom.QueueOnMainThread(()=>{
//頂点を設定します。
mesh.vertices = vertices;
//境界を再計算
mesh.RecalculateBounds();
});

---------------------------------------------------------2 end

上記の関数は、パラメータなし、動作する任意のコンテンツへノーリターン。クロージャは、アクセスパラメータと独自のクラスや関数のローカル変数である第二のスレッドで行うラムダの使用の良い例です。

あなたは)=> {...}新しいスレッドで関数内のすべてのコードを実行するためにラムダ関数を定義します(使用することができます。

私たちは、メインスレッド上のメッシュの頂点の更新を変更する必要があるので、我々は、(フレームまたは次のフレームが次の更新サイクルと呼ばれている)次の更新サイクルの実行時処理にQueueOnMainThreadを使用しています。QueueOnMainThreadもアクションへの必要性をアップデート元の頂点メッシュを更新します。

ここでは織機のコードは次のとおりです。

=====================Loom.cs=====================3========中>>日

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using UnityEngine;

public class Loom : MonoBehaviour {

    #region 公共字段

    ///1
    ///スレッドの最大数、静的なパブリックフィールド
    ///
    public static int maxThreads = 8;

    #endregion

    #region プライベートフィールド

    ///2
    /// 現在のスレッド数、プライベート静的フィールド
    ///
    private static int numThreads;

    ///
    ///シングルトン
    ///
    private static Loom _current;

    private int _count;

    ///
    /// 初期化された
    ///
    private static bool initialized;

    private List _actions;
    private List _delayed;
    private List _currentDelayed;

    ///
    /// 行動の///現在のリスト
    ///
    private List _currentActions;

    #endregion

    #region パブリックプロパティ
   
    ///
    /// 現在の織機シングルトンオブジェクト属性取得
    ///
    public static Loom Current {
        get {
            Initialize();
            return _current;
        }
    }

    #endregion

    #region Unity3d API
   
    void Awake() {
        _current = this;
        initialized = true;
        _actions = new List();
        _delayed = new List();
        _currentDelayed = new List();
        _currentActions = new List();
    }

    void Update ( ) {
        lock ( _actions ) {
            _currentActions.Clear( );
            _currentActions.AddRange(_actions);
            _actions.Clear( );
        }
        foreach ( Action a in _currentActions ) {
            a( );
        }
        lock ( _delayed ) {
            _currentDelayed.Clear( );
            _currentDelayed.AddRange(_delayed.Where(d => d.time <= Time.time));
            foreach ( var item in _currentDelayed )
                _delayed.Remove(item);
        }
        foreach ( var delayed in _currentDelayed ) {
            delayed.action( );
        }
    }

    void OnDisable ( ) {
        if ( _current == this ) {
            _current = null;
        }
    }

    #endregion Unity3d API

    ///
    /// 初期化し、新しいゲームオブジェクトを作成織機、織機やスクリプトを追加
    ///
    private static void Initialize() {
        if (!initialized) {
            if (!Application.isPlaying)
                return;
            initialized = true;
            GameObject g = new GameObject("Loom");
            _current = g.AddComponent();
        }
    }
   
    ///
    /// 遅延キューエントリ
    ///
    public struct DelayedQueueItem {
        public float time;
        public Action action;
    }   

    ///
    /// メインスレッド上///コード実行
    ///    
    public static void QueueOnMainThread(Action action) {
        QueueOnMainThread(action, 0f);
    }
    ///
    /// コードは、メインスレッド上で実行するには、2番目のパラメータはTime.timeが実行応じて、数秒の実装の遅れである
    ///   
    public static void QueueOnMainThread(Action action, float time) {
        if (time != 0) {
            lock (Current._delayed) {
                // 値が時間遅延の効果を達成するためにtime.timeを追加
                Current._delayed.Add(new DelayedQueueItem { time = Time.time + time, action = action });
            }
        } else {
            lock (Current._actions) {
                Current._actions.Add(action);
            }
        }
    }

    ///
    /// 新しいスレッドで実行するコード
    ///   
    public static Thread RunAsync(Action a) {
        Initialize();
        while (numThreads >= maxThreads) {
            Thread.Sleep(1);
        }
        Interlocked.Increment(ref numThreads);
        ThreadPool.QueueUserWorkItem(RunAction, a);
        return null;
    }

    private static void RunAction(object action) {
        try {
            ((Action)action)();
        } catch(Exception e) {
            Debug.Log(e.Message);
            Debug.Log(e.Source);
        } finally  {
            Interlocked.Decrement(ref numThreads);
        }
    }
   
}

=====================Loom.cs====================================3

UnityScriptの場合は、フォルダに織機、プラスLoom.csを使用できるように:

//第二のスレッドで// Scaleグリッド
function ScaleMesh(mesh : Mesh, scale : float)
{
//Get the vertices of a mesh
var vertices = mesh.vertices;
//アクションで新しいスレッドを実行します。
Loom.RunAsync(function() {
//すべての頂点を通る//ループ
for(var i = 0; i < vertices.Length; i++)
{
//頂点をスケール
vertices[i] = vertices[i] * scale;
}
//メインスレッド上のいくつかのコードの実行
//グリッドを更新します
Loom.QueueOnMainThread(function() {
//頂点を設定します。
mesh.vertices = vertices;
//境界を再計算
mesh.RecalculateBounds();
});

 

 

| whaison | Unity3d | 23:38 | comments(0) | - | pookmark |
            
2016.12.02 Friday
コントロール パネル¥すべてのコントロール パネル項目¥既定のプログラム¥関連付けを設定する

コントロール パネル¥すべてのコントロール パネル項目¥既定のプログラム¥関連付けを設定する

 

.mat という拡張子のファイル

 

ファイル拡張子のひも付けを変更する必要があります。

「コントロールパネル」>「プログラム」>「あるファイルの種類を特定のプログラムでオープン」と進み、.mat をダブルクリックして「ファイルを開くプログラムの選択」でMATLABに関連付けなおしてください。

なお、過去(2006年頃)の報告では、MS Officeのアップデートをすると毎回元に戻ってしまうという報告もありました↓
http://oshiete.goo.ne.jp/qa/2482223.html

ご参考になれば幸いです。

 

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1163895821

| whaison | Unity3d | 19:24 | comments(0) | - | pookmark |
            
2016.11.18 Friday
Unity道場_ShaderForge102にいったメモ


Unity道場_ShaderForge102

ノード

node
line cut ライン切る option + 右クリック
ーーー基本ーーー
Normal Dir
Light  

の内積 dot
ーーーーーーーー

ーーーーーーーー

ランバートを作って
Pongを作って
HarfLanbert作って

Toon Shader  comp

ランプシェーダ 傾斜
トューンライン1
アウトラインだけならいい。
クリエス線

トューンライン2
Unityデフォルト
イメージエフェクトでカメラ側につける
クリエス線も出る


ユニティちゃんトューンシェーダーは はダウンロード可能でShaderForgeで開けて
デザイナー用にテクスチャで調整できるようになってる。
たくさんのメリットがあるみたい。

数学 堂前さん
DirectX シェーダプログラミング 2007
本村さん
もとむらさん


本村・C・純也氏(リードモデラー兼テクニカルアーティスト)。

GUILTY GEAR Xrd -SIGN-でキャラクターモデルの制作全般やボーン&リグ設計を担当。

過去参加作品にはブレイブルーシリーズや,格闘ゲーム版のペルソナ4シリーズ,「ギルティギア2 オーヴァチュア」がある

https://www.google.co.jp/search?q=本村 トゥーンシェーダー amazon

http://www.4gamer.net/games/216/G021678/20140703095/index_2.html

https://www.amazon.co.jp/Unity 5 実践シェーダプログラミング改訂第一版-高橋-潤-ebook/dp/B01555RCGY


ライトニングトーク1
mozaiku
ponion

rotation
paneer  

rotater

blendmode 除外 一部の絵を大きく Excretion

Blend B + LMB

 

うまく使うと

ライトニングトーク2
実行時のライトベイクをシェーダーでやってみる。
Forward ライト制限
Difard  ライト重い

ユーザーが光るものを置けない

CameraのRendertype Forward Difard 切り替え

UVのテクスチャを作る。
Vert 
Frag

頂点をどうやってそこに

RenderTextture で
Model
Vertで

ライトニングトーク3
シェーダー座標系について


UE4 PostProsses
UE3のサイトで
ShaderGraphと同じ事やってます。
HLSLで出力される

Youtube UE4 8bit  soundgameGam

https://www.youtube.com/watch?v=GLJC1qG3oK4

postprosesで 8bit のモザイクにする

UE leftUP0
Unity leftDown0

Unity Graber グラバー

Unreal の本を参考にして ShaderForgeを作るとか。。。

| whaison | Unity3d | 08:19 | comments(0) | - | pookmark |
            
2016.11.16 Wednesday
AllAnimatorControllerStateTransitionSetting.cs

AllAnimatorControllerStateTransitionSetting.cs

 

 

 

| whaison | Unity3d | 19:39 | comments(0) | - | pookmark |
            
2016.11.16 Wednesday
ModelImporterFbxAnimationOptimal.cs Unity5.3 Modelimporter.resampleCurves

ModelImporterFbxAnimationOptimal.cs

 

Modelimporter.animationCompression = ModelImporterAnimationCompression.Optimal;
https://docs.unity3d.com/ja/current/ScriptReference/ModelImporterAnimationCompression.html

 

Off  アニメーションの圧縮を行いません
KeyframeReduction  Keyframe の削減を行います
KeyframeReductionAndCompression Keyframe の削減と圧縮を行います

Optimal 

 

 

 

Keyframe の削減を行い、メモリフットプリント(メモリ使用量)を減少させるために

ランタイムで最高の animation curve representation(アニメーション曲線表現) を選択します(デフォルト)。

 

Modelimporter.resampleCurves = true;

ture に設定すると、 その時点でカーブをクォータニオンで表現されたアセットとして保存します。
false に設定すると、 可能な場合、インポーターはアニメーションカーブを再サンプルしません。
オイラー角をそのまま再生時に使用しますUnityで再生時にクォータ二オンに変換されます。補足2 Unity の回転と向きへ


         
      

- FBX のうち適用されない機能 (変換の PreRotation や PostRotation など) では、この設定をオーバーライドします。このような場合、アニメーションカーブは、たとえ設定が無効になっていても再サンプルされます。最良の結果を得るには、PreRotation、PostRotation、GetRotationPivot の使用を避けるようにします。
- このオプションはバージョン 5.3 で導入されました。5.3 より前の Unity のインポートのビヘイビアは、常にこのオプションが有効にしてあるのと同じでした。したがって、このオプションを有効にすると、5.3 より前のアニメーションインポートと同じビヘイビアになります。

 
       

       

補足1 オイラー曲線のインポート  
https://docs.unity3d.com/jp/current/Manual/AnimationEulerCurveImport.html
回転のリサンプリングを無効にして、オリジナルのオイラーカーブを使う主な理由は、

デフォルトのクォータニオン補完では誤った結果になり、問題が発生するからです。
回転のリサンプリングを無効にした場合、、実行時でさえ、常に保持されるようになっています。
回転の値は Gameobject に適用されるまでオイラー値として保持されるようになります。これによる最終結果は、

以前より良くなる事はあっても、悪くなる事はないはずです。
ベイクされていない回転カーブに関して、回転カーブの純利益がでなければなりません。

Unity のトランスフォームインスペクターで使用されるオイラー角は、デフォルトで Z,X,Y の順番で適用されます。

Rotation (YZX)など Unity のデフォルトと異なる回転順によるオイラー曲線が

インポートされたアニメーションを再生するあるいは編集する場合、

現在の回転順の指示が回転フィールドの横に表示されます。

Rotation (Mixed)など

Transforms have different rotation orders,keyframes saved will have same value but not the same local rotation
また異なる回転順による複数のトランスフォームを編集する場合、

適用された同じオイラー回転が異なる回転順によるカーブで異なる結果を与えることを警告するため、ユーザーに対して上記警告が表示されます。

 

補足2 Unity の回転と向き
https://docs.unity3d.com/jp/current/Manual/QuaternionAndEulerRotationsInUnity.html
3D アプリケーションの回転は、たいていクォータ二オン(180度まで, ジンバルロックしない。)

オイラー角(180を越す回転OK ,ジンバルロックする。)のどちらかによって表されています。
それぞれ、利点と欠点があります。Unity では内部でクォータ二オンを採用していますが、

編集しやすいように、インスペクターでは同等のオイラー角で表しています。
       

 

 

 

| whaison | Unity3d | 17:31 | comments(0) | - | pookmark |
            
2016.10.20 Thursday
Unity ProfileAllocationFpsMeasureStatsUGUI.cs CurrentFrame

Unity ProfileAllocationFpsMeasureStatsUGUI.cs CurrentFrame

 

Code:

myStatsGameObject=new GameObject();

myStatsGameObject.AddComponent<ProfileAllocationFpsMeasureStatsUGUI>();

 

 

Script Making

Canvas

UnityEngine.EventSystems.EventSystem

UnityEngine.UI.Text

 

uGui Text .text

 

60 FPS
60.362 FPS
292 CurrentFrame
Used Mem                      22.93 MB
Max Used Mem              22.93 MB
Used Prog Heap                83.21 MB
Mono Used                 22.93 MB
Mono Heap                 39.93 MB
Total Alloc Mem               83.21 MB
System Memory         32675 MB
Total Reserved Mem        241.28 MB
Total Unused Res-Mem  158.07 MB
Graphic Memory            1993 MB
Allocation rate               1.14 MB
Collection frequency      0.90 s
Last collect delta            0.030 s (33.7 fps)

 

 

 

Auto uGui Setting

 

 

 

| whaison | Unity3d | 18:02 | comments(0) | - | pookmark |
            
2016.10.17 Monday
Unity 5.5.0b7 Bata Unity5.4.1p4  WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' has no vertex shader On Xcode 8.0

 

 

 

Unity 5.5.0b7 Bata And
Unity5.4.1p4  WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' has no vertex shader On Xcode 8.0

Unity5.4.1p4
Xcode Version 8.0 (8A218a)
iPhone 7 iOS10.0.2(14A456)
-------- -------- -------- -------- Xcode OutPut-------- -------- -------- -------- -------- 
-------- failed compiling:

Note: Creation of internal variant of shader 'Hidden/Internal-MotionVectors' failed.
WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Pass '' has no vertex shader
WARNING: Shader Unsupported: 'Hidden/Internal-MotionVectors' - Setting to default shader.

こちらで Fixed in Unity 5.4.0 と解決されたようになってるのは  'Hidden/CubeBlend'だけなんでしょうか?
https://issuetracker.unity3d.com/issues/ios-shader-compilation-failed-error-in-the-log

以下全ログ

https://www.facebook.com/groups/unityuserj/permalink/1190719494321322/?comment_id=1193658564027415

オフィシャルの方が 使用しているGraphics APIがOpenGLES 2だったりしますか? OpenGLES2の場合は動作せず、サポートするのは厳しいそうです と返信してくださったので !プロジェクトセッティングはOpenGLES2.0 ですね。Metalを指定したら消えました。

 

プロジェクトセッティング iOSのAuto Graphics APIs のチェックを外すと出てくる
Graphics APIs がOpenGLES 2.0だったんですが
そちらをを Metal にしたらなおりました。
そもそもなぜ今までのプロジェクトがOpenGLES 2.0 を使っていたのかはCriWareなどのプラグイン関係によるところかもしれません。

 

テストプロジェクト

https://bitbucket.org/whaison0422/unitymetaliosunity5.5.0b7

参考リンク

 

Unity5.3.2 Strip Engine Codeの挙動 iOS Build on XCode:WARNING: Shader Unsupported: 'Hidden/Dof/DX11Dof' - Pass '' has no vertex shader

http://whaison.jugem.jp/?eid=794

Strip Engine Code に関して

AssetBundle使いつつlink.xmlになにか書くのは無意味、、ではなかった!!

http://sassembla.github.io/Public/2016:02:11%204-33-38/2016:02:11%204-33-38.html

link.xml 製造機

http://sassembla.github.io/Public/2016:02:07%2023-39-20/2016:02:07%2023-39-20.html

 

teratail

https://teratail.com/questions/51422

| whaison | Unity3d | 17:01 | comments(0) | - | pookmark |
            
2016.09.30 Friday
Unity OutSideControlProgressBar.cs 外部からインクリメント可能なプログレスバー エディター拡張 EditorUtility.DisplayProgressBar //OK EditorUtility.DisplayCancelableProgressBar //NG

Unity OutSideControlProgressBar.cs 外部からインクリメント可能なプログレスバー エディター拡張

EditorUtility.DisplayProgressBar //OK    EditorUtility.DisplayCancelableProgressBar //NG

 

 

 

try catch できないエラーとして 以下が出た
  コントロールウィンドウから プログレスウィンドウを開き  プログレスバーウィンドウ内プロセスで閉じたらエラー
 
  GUI Window tries to begin rendering while something else has not finished rendering! Either you have a recursive OnGUI rendering, or previous OnGUI did not clean up properly.

 

 GUIウィンドウは、他の何かがレンダリング終了していないのに レンダリングを開始しようとしています!

どちらかが再帰的なOnGUI()レンダリングを持っている、または以前のOnGUIが正しくクリーンアップしませんでした。
 
  ということで コントロールウィンドウから 開き閉じを行うようにすると出なくなった。 自分で閉じるの禁止っす。みたいな感じでした。

| whaison | Unity3d | 11:34 | comments(0) | - | pookmark |
            
2016.09.06 Tuesday
クォータ二オン (四元数)と複素数とでの考え方 Dimensions 5 Japanese さまより

 

http://docs.unity3d.com/jp/current/Manual/QuaternionAndEulerRotationsInUnity.html

 

--

 

オイラー角とクォータ二オンの違い

オイラー角

オイラー角は、3つの角度の値を X、Y、Z 軸に順に当てはめて回転を表す簡易な方法です。オイラー角をあるオブジェクトに応用する場合は、オブジェクトを各軸に沿って与えられた角度で回転させます。

  • 利点 - オイラー角は、3つの角度から構成される直感的で「人間が理解できる」フォーマットで表現されています。
  • 利点 - オイラー角は、180度以上の回転を経て、1つの向きから別の向きへの回転を表現できます。
  • 制限 - オイラー角はジンバルロック (Gimbal lock) として知られている制限があります。対象をそれぞれの軸に沿って順に回転させるとき、第一、第二の回転によって、結果的に 3つ目の軸にそろってしまうことがあります。つまり、第三の回転値を 3つ目の軸に反映できないために、「角度の自由」が失われてしまいます。

クォータ二オン

クォータニオンは、オブジェクトの向きや回転を表すのに使用されます。この表現法では、内部で 4つの数字 (Unity では x、y、z、w と呼びます) で構成されています。ただし、この数字は、角度や軸を表現しているわけでなく、通常、直接アクセスすることはありません。クォータ二オン (四元数)について特別に興味がない限り、クォータニオンが 3D 空間の回転を表しているのだということを知っているだけで十分で、通常、x、y、z プロパティーを操作したり変更することはありません。

ベクトルが位置と方向 (方向は原点から測ります) を表現するのと同様に、クォータ二オンは向きと回転を表現できます。回転は、回転「基準」か「単位」を基準に測られます。回転を、ある向きからもう一方の向きへの方向として計測するため、クォータ二オンでは、180度より大きな回転を表現することができません。

  • 利点 - クォータ二オンの回転は、ジンバルロックの影響を受けません。
  • 制限 - 単体のクォータ二オンでは、180度を超す回転を表すことができません。 (果たしてそうだろうか?)
  • 制限 - クォータ二オンの数的表現は、直感的に理解できません。 (そうだろうか?)

-

-

https://www.youtube.com/watch?v=66VZBMAPn3E

-

--

1にマイナス1をかけるとマイナス1だ 180度回転

-

1に

 

いったんルートマイナス1かけると 90度になる

-

-

- ( マイナス 1の平方根はなく虚数iとされるが)

- ルートマイナス1 であらわさず一旦 i としてあらわすと世界が見えてくる

 

-

-これは座標系ととらえることができる。

-そして  ( 1,0+2,0i 複素数) と ( 3,0+1,0i  複素数) のたしざんができる。

    1,0+2,0i

+  3,0+1,0i

--------------

    4,0+3,0i

 

-

複素数をに2をかけることもできる

  1,0+1,0i

        x 2

-----------

  2,0+2,0i

 

-

-

複素数にiをかけることもできる iは90度回転だからだ。

   3,0+1,0i

         x i

------------

  -1,0+3,0i

 

複素数どうしの掛け算はどうだろう?

     2,0+1,5i

 x -1,0+2,4i

----------------

 

これを計算してみると

(2+1,5i).(-1+2,4i)

左辺 2 と 1.5i にそれぞれかけるとこうなり

=2(-1+2,4i)+1,5i(-1+2,4i)

それぞれ,かけていこう。

= -2+4,8i   -1,5i+ 3,6i.i

iは-1の平方根なのでi かける iはマイナス1だ。

= -2+4,8i   -1,5i -3,6

すこしiについて整理すると

= -2 -3,6 +4,8i -1,5i

-5.6    +3.3i

グラフで示すとこうなる。

これは おどろくべきことで、平面状の点 通常(x,y) をあらわすのに 1つの数(1+1i)で 足りるということだ。

 

黄色の長さを測ってみよう=これは絶対値をはかることができる。

また 複素数の絶対値 x  複素数の絶対値 =  複素数 x  複素数 の絶対値  となる。

角度を見てみよう!

複素数の角度は 原点からのびる、その プラス 水平面からの角度だ

二つの複素数の角度は36,8c +112,6c =149,4c「かけあわせた複素数」の和だ

 

| whaison | Unity3d | 17:06 | comments(0) | - | pookmark |
            
2016.08.18 Thursday
Unity 4.5でのシェーダ shaderの compileコンパイル ページの翻訳のメモ

Unity 4.5でのシェーダ shaderの compileコンパイル ページの翻訳のメモ

 

https://translate.google.co.jp/translate?sl=en&tl=ja&js=y&prev=_t&hl=ja&ie=UTF-8&u=https%3A%2F%2Fblogs.unity3d.com%2Fjp%2F2014%2F05%2F06%2Fshader-compilation-in-unity-4-5%2F&edit-text=&act=url

 

このリクエスト結果でしかないです。

 

 

いくつかの部分で物語。 1)シェーダのコンパイルが今後のユニティ4.5にどのように行われますか。 2)それが開発された方法。最初のものは、おそらくユニティユーザーに興味深いものです。 私たちは仕事とスタッフの開発方法についての好奇心もののための第二の1一方。

要約:ユニティ4.5は、「すごい、多くのシェーダ、はるかに速い」シェーダインポートし、より優れたエラー報告があります。

現在の状態(ユニティ<= 4.3)

あなたはユニティに新しいシェーダファイル(.shader)を作成したり、既存のものを編集するとき、私たちは「シェーダインポーター」を起動します。 ただ、他の変更アセットのように。 そのシェーダ輸入者は、いくつかの構文解析を行い、その後、私たちはサポートするすべてのプラットフォームのバックエンドに全体のシェーダをコンパイルします。

あなたは簡単な作成するときに典型的には、 サーフェスシェーダを 、それが内部的に50かそこら内部シェーダ変異体(古典的な"プリプロセッサ駆動特級シェーダ」アプローチ)に展開されます。 典型的にはそこに7かそこらプラットフォームのバックエンドは、( -より多くのあなたがコンソールのライセンスを持っている場合D3D9、d3d11、openglの、GLES、gles3、d3d11_9x、フラッシュ)にコンパイルします。 これは、数百人のシェーダがコンパイルされているあなたは、シェーダで何かを変更するたびに、意味します。 そして、すべてのことが、あなたはかなり単純なシェーダを持っていると仮定-あなたには、いくつかの中で投げる場合multi_compileディレクティブ 、あなたは何千ものを見ているでしょうか、何千ものシェーダの数十は、コンパイルされています。各。 そして。 すべて。 時間。

それはそれを行うには意味がありますか? あんまり。

「なぜ我々はこれをやっている?」状況のほとんどのように、この1はまた、有機的に進化し、そして「それは一度に良いアイデアのように聞こえた "と"誰かがそれに取り組んでいない限り、それ自体が解決しない」と説明することができます。

昔、Unityは1つまたは2つのシェーダプラットフォームのバックエンド(OpenGLとD3D9)を有していました。 シェーダの量がやっていた人々がはるかに低かった変異体です。 時間では、我々はより多くの両方のバックエンド、および以上の変異体を得ました。 それは、誰かがこの問題を解決する必要があることは非常に明らかになりました。

上記に加えて、シェーダのコンパイルと他の問題は、例えば、そこにありました。

  • シェーダでのエラーは、よく、「面白い方法で「報告されました。 かなり混乱しています - 時には行番号が何の意味も持ちませんでした。
  • デバッグ発生した表面シェーダコードはかなりのブードゥー教のトリック(関与#pragma debugなど)。
  • シェーダの輸入は、シェーダのこれらの何百ものマルチスレッドコンパイルしようとしたが、いくつかのバックエンドコンパイラ(CG)は、内部グローバルミューテックスを持って、よく並列化しません。
  • シェーダ輸入プロセスは、 非常に大きな multi_compileバリアントカウント用のメモリが不足していました。

だから我々はユニティ4.5で作品をインポートする方法シェーダを変更しています。 この記事の残りの部分は、 に社内wikiページのダンプになります。

ユニティ4.5にインポートシェーダ

  • 4.3 / 4.5に比べランタイム/プラットフォームの変更いいえ-すべての変更が唯一のエディタです 
  • 4.3 / 4.5に比較して、シェーダ機能の変更はありません 
  • シェーダのインポートは、 はるかに高速です  特に複雑な表面シェーダ(などマーモセットSkyshop)。
    • これに4.3、15秒で3分:グラフィックステストプロジェクト内のすべてのシェーダを再インポート。
  • シェーダ-エラーシェーダでのエラーは正しい行に報告されています シェーダの誤差を含む(.cginc)ファイルが正しくファイル名&行番号で報告されています。
    • ファイルが遊びに来含む場合は特に、ほとんどが前に「完全に壊れた」でした。
    • d3d11バックエンドで私達はほら、ラインなどのエラー列を報告ました。 アップグレードDLL d3dcompiler中のある時点で、エラーの印刷構文を変更し、我々はそれが間違った構文解析されました。 うまくいけば、それが再び壊れることはありませんので、今のユニットテストを追加しました。
  • シェーダ面サーフェスシェーダのデバッグワークフローがはるかに優れています
    • これ以上のナンセンス」は、#pragmaのデバッグを追加していないコンパイルシェーダを開き、アセンブリのトンを削除」。 インスペクタでただ一つのボタンには、「表示は、コードを生成しました」。
    • 生成されたサーフェスシェーダコードは、いくつかのコメントや、より良いインデントを持っています。 それは今、実際に読み取り可能なコードです!
  • シェーダインスペクタの改善:
    • それは長いですと、エラーリストがscrollviewを持っています。 正しいファイル/行を開くために、エラーをダブルクリックすることができます。 コンテキストクリックメニューを経由してエラーテキストをコピーすることができます。 各エラーは明らかにそれがために起こっているプラ​​ットフォームを示しています。
    • コンパイルされたシェーダを調査することは正気です。 現在アクティブなプラットフォーム用にコンパイル結果を表示するための一つのボタン。 別のボタンは、すべてのプラットフォームで表示します。
  • その他のバグ修正
    • 表面シェーダで固定multi_compileプリプロセッサディレクティブは、時には非常に予期しない結果を生成します。
    • .shaderまたは.cgincファイルにUTF8 BOMマーカーは、エラーを生成しません。
    • シェーダファイルは、ASCII以外のフォルダとファイル名にすることができます含まれています。

それがどのように動作するかの概要

  • 代わりに、インポート時に可能なすべてのプラットフォームのすべてのシェーダバリアントをコンパイルします:
    • 唯一のシェーダ(表面シェーダ生成など)の最小限の処理を行います。
    • 実際に必要な場合にのみ、シェーダ変異体をコンパイルします。
    • 代わりに、インポート時に100から1000まで内部シェーダのコンパイルの典型的な作業のため、これは通常は一握りをコンパイルしてしまいます。
  • プレーヤーのビルド時に、そのターゲットプラットフォーム用のすべてのシェーダバリアントをコンパイル
    • ライブラリ/ ShaderCache下キャッシュ同一のシェーダ。
    • だから、プレーヤーのビルド時に、唯一の未常にコンパイルされたシェーダがコンパイルされます。 そして常にのみ、それらを必要とするプラットフォームのため。 あなたはフラッシュを使用しない場合(すべてのシェーダは、あなたは決してそれらを必要とする場合であっても、すべてのプラットフォームにコンパイルされている4.3、とは対照的に)、例えば、その後、シェーダのいずれも、フラッシュ用にコンパイルされません。
  • シェーダコンパイラ(CgBatch)は「サービスプロセス」として実行されているに、各シェーダのインポートのために呼び出されてから変更します
    • コンパイラプロセス&ユニティ間のプロセス間通信。 バージョン管理プラグインの統合のためのと同じインフラストラクチャを使用して。
    • プレーヤーのビルド時に、ワイドに行くとシェーダのコンパイルを行うために、すべてのCPUコアを使用します。 古いコンパイラは、内部でマルチスレッドにしようとしたが、一部のプラットフォームに起因するものではない可能性はスレッドセーフではありません。 今、私たちはコアごとに1コンパイラ・プロセスを起動すると、彼らは完全に並列行くことができます。
    • シェーダコンパイラプロセスを一度メモリにシェーダ変異体の無数を保持する必要はありませんので、メモリ不足のに役立ちますが、同様にクラッシュ - どのようなことが見ていることは一度に一つの変形です。

それが開発された方法

これは主に一または二人の努力だった、といくつかの「スプリント」で開発されました。 この1のために我々は、詳細な作業計画(Confluenceの「タスクリスト」)のための私達の内部のwikiを使用するが、私たちは持っているだけで、同様Trelloまたは類似のものを使用することができます。 全体的にこれは実際の作業の2ヶ月の周りおそらくだった-しかし、はるかに長い時間の間に広がります。 最初のスプリントは、2013年3月に開始し、第一のアルファビルド(2013年10月)のためだけの時間で4.5コードベースに状態「私たちは、この明日を出荷することができると思います」。に上陸しました マイナーな改良と修正は4.5アルファ&ベータ期間中に行われた。 今anydayを出荷する必要があり、指が交差!

驚くべきことに(または多分ない)、作品の最大の作品は、「どのようにシェーダにエラーを報告しますか?」の周りの領域でした。今シェーダ変異体は、 オンデマンドでのみインポートされるので、それは多少の誤差が唯一の"最初のインポートの後にいくつかの時間」を発見することができることを意味します。 しかし、これは、バイ・デザイン変更です - 明らかに反復時間の条件をでスケールしない」のは、可能なすべてのプラットフォーム用のすべての可能な変形をコンパイルしましょう​​」の前のアプローチとして。 しかし、この明らかに潜在的な欠点である「シェーダは、それはすべてのエラーが、おっとを持っていなかったように、今ではしているようでした」。 しかたがない; ほとんどすべてと同様に五分五分&欠点があります。

開発の大部分はベータテストグループに構築し、「新しいシェーダー輸入は+ 4.3 "ユニティ4.3ベースのブランチで行われた、と何かが働いていた後、私たちは、カスタムをオフに送信しました。 私たちも、早期のフィードバックを得るために開始された4.5アルファ前にこれをやっていました。 私が今まで持っておそらく、素敵なフィードバック:

私は今、約一週間のビルドを使用していると私は完全に私がシェーダでどのように動作するか、それがどのように変化したかに吹き飛ばされています。

私は道速く物事を試してみることができます。 
私はもはや含まれるファイルにタイプミスを作る怖いません。 
これら二つは、作業しているとき、私はより多くの周りにプレーすることにまとめます。 
このため、私は映画のトーンマッピング[私のモバイルターゲット上]と偽のHDRを行う方法を発見しました。

この[シェーダコンパイラ]なしで戻って定期的にベータへ行くの考えは本当に私をおびえさせます。

とにかく、ここで私たちのウィキからのタスクのダンプは、(それらのすべてが完了したら、我々はオフダニたい少しのチェックボックスを持っていた)のです。 いつものように、「それは基本的に動作し、素晴らしいです! "仕事の最初の週(第一スプリント)の後に達成されました。 したことを後に残されたものなど「すべてのTODOのを修正し、すべての退屈な残りの作業を行います」

2013月スプリント:

  • CgBatch DLL作ります
    • 実行ユニットテスト
    • DLLからインポートシェーダ
    • あらゆる場所に一時ファイルを使用しないでください
  • シェーダの輸入の変更
    • 任意のコンパイルを行うだけ生成ソースコードにサーフェスシェーダの一部を変更しません
    • 「オープン表面コンパイラの出力」ボタンを作ります
    • インポート時に、サーフェスシェーダの生成を行う&結果をキャッシュ(シェーダでシリアライズ、編集者のみ)
    • また、すべてのCGINCLUDEブロックを処理し、実際にインポート時の#includeを行い、その結果をキャッシュ(この後、CGPROGRAMブロックと左、ないの#includeステートメントを使用して)
    • ShaderLab ::パスは、それが内部にまだコンパイルされていないプログラムを持っているし、適切なCGPROGRAMブロックを見つけることができます知っている必要があります:
      • shaderlabに構文を追加し、パスのようなもの{GpuProgramID int型}
      • CgBatchにコンパイルをしないでください、ちょうどCGPROGRAMブロックを抽出し、それらにIDを割り当てると、「GpuProgramID xxxの」に置き換えます
      • - > CGPROGRAMブロック・テキストスニペットIDのマップ:シェーダエディタ専用データとして「結果をキャッシュします」
    • CgBatchは、1シェーダバリアントコンパイルする機能を追加(CGプログラムブロックのソース+プラットフォーム+のキーワードを、バイトコード+エラーアウト)
    • CgBatchの実際のシェーダコンパイラから取り扱うすべての#includeを削除
    • shaderlabプログラム/サブプログラム/バインディング構文でならないために、単一のシェーダのコンパイルの出力を変更しますが、直接データを生成します。 反射データの文字列、すべての制服/テクスチャを報告するいくつかの仮想インタフェース/ ...などのシェーダコード。
  • オンデマンドでシェーダをコンパイルします
    • GPUプログラム&彼らのparamsのデータファイルフォーマット
    • m_GpuProgramLookup( - > GPUProgramキーワード):ShaderLabパスは、地図を持っています。
    • GetMatchingSubProgram:
      • 見つかった場合はm_GpuProgramLookupから1を返します。 見つかった場合は、キャッシュから取得
      • 見つからない場合は、プログラムのスニペットをコンパイルします
      • キャッシュへの書き込み

2013年7月スプリント:

  • 引いて、トランクの最後の3ヶ月をマージ
  • プレーヤーのビルド・パイプライン
    • プレーヤー/バンドルを構築する場合、すべてのシェーダのスニペットをコンパイルし、それらを含めます
    • exclude_renderers / include_renderers、シェーダスニペットデータにトリクルダウン
    • 「ターゲットなし」(のすべて)プラットフォーム向けにビルドするときに適切にそれを行います
      • スニペットは、(必要?ない?)内蔵のリソースファイルに保存されます
    • 建物組み込みのリソースファイルを動作させます
      • DX11 9.xのシェーダが含まれていません
      • 建物エディタのリソースファイルの作業を行います
    • プレーヤーを構築しながら、「行方不明の組み合わせ」コンパイルをマルチスレッド。
      • スニペットキャッシュ内のスレッドの安全性を確保
  • 賢明エラーを報告
  • その他
    • 各シェーダスニペットは、おそらく必要なキーワード順列を知っている必要があります:CgBatchは、そのスニペット内の直列化(ベクトルのような<ベクトル>)を抽出します
    • GLSLPROGRAMスニペットを修正しました。
    • 「cgbatchバージョン "とは別の「コンパイラのバージョン」。 スニペットデータ&ハッシュに埋め込むコンパイラのバージョン
    • UsePassを修正しました。

2013年8月スプリント:

  • 4.3ベースのブランチに移動します
  • GFXのテストの失敗
    • メトロ、影関連のテストに不合格
    • フラッシュ、失​​敗したカスタムライトマップ機能検査
  • エラー報告:後半に発見されたエラーに対処する方法を見つけ出します。 不正な構文、タイプミスなどがある場合; 効果的にシェーダは "壊れた"です。 バックエンドシェーダコンパイラはエラーを報告した場合:
    • すべてのプログラムのためのピンク "エラーシェーダ」を返し頂点/ピクセル/ ...のいずれかがエラーを持っていた場合、すなわち、私たちはそれらのすべてのためのピンクのシェーダを使用する必要があります。
    • エラーがコンソールにログインします。
    • シェーダにエラーを追加しますので、それがエディタに表示されています。 その時にシェーダをシリアル化するため、ライブラリ(GUID>のエラー)の下でいくつかのデータベースにシェーダを追加することはできません。
      • シェーダGUIDを持つSQLiteデータベース - >エラーのセット。
    • 「エラーが発生したシェーダー」のリストにシェーダを追加します。 ループをレンダリングした後にそれらの上に行くと、彼らはピンクのエラーシェーダを使用するように行われます。 (効果的にこれは、現在の(4.2)の動作を変更することはありません:あなたは構文エラーがある場合は、シェーダはピンクです)。
  • その他
    • それはシェーダスニペットに引っ張るとシェーダフォールバックを修正しました。
    • ビルド時に一部「シェーダによって必要なメッシュコンポーネント」 - それらを把握する必要があります! 問題; でもそれを知っているバリアントをコンパイルする必要があります。
    • より良いの#include処理は、今、同じファイルを複数回含み
  • (...将来の64ビットMac用)を再度実行可能ファイルにCgBatchを作ります
    • すべての通信のためのExternalProcessを適応させます
    • ユニットテストが再び機能させます
    • CgBatchからすべてJobScheduler /ミューテックスのものを削除します。 代わりに、複数のプロセスを起動
    • メモリをリークしているように感じて、確認する必要があります
  • シェーダインスペクタ
    • 表面だけシェーダのための「オープンサーフェスシェーダ」ボタンを表示
    • 今無用である「コンパイルシェーダを開く」、シェーダのasmを表示しません。 何とかそれをやり直す必要があります。

2013年9月スプリント:

  • 4.5トランクのために準備してください
    • 現在のトランクにマージ
    • チームシティーグリーンを作ります
    • 土地はトランクに!
  • メイク4.3ベースのチームシティーグリーン
    • 組み込みリソースを構築し、シェーダコンパイラRPCエラーGL-のみGFXのテストの失敗(CgProps試験)で失敗します
    • GLSLPROGRAM前処理壊れ、テストを追加
    • ToonyColorsにおけるモバイルGFXテストの失敗
  • エラー報告との#include取り扱い
    • テストで、一度、すべてのレポートの行番号を修正します。
    • 正しい.cgincファイルおよびそれらの正しいライン上のレポートのエラー
    • 解決複数のは、&影響プリプロセッサは、この方法が含まれています。スニペットの抽出時間で、処理が含まれておりません! ただ、ハッシュは内容が含まれており、スニペットのハッシュにそれを養います。
    • いくつかのコンパイラを混乱イン
| whaison | Unity3d | 19:09 | comments(0) | - | pookmark |