memomem

備忘録・メモ置き場

PointCloud Unity vol.2, PSIZEとDirectX対応

github.com

上記のプロジェクトなど点群のサイズを指定するのに下記の用にShader中でPSIZEが使われるが、これがDirectX11,12では動作しない。 サイズ指定が反映されず、点のサイズでしか表示されない。

struct v2f {
    float4 pos: POSITION;
    fixed4 col: COLOR;
    float size: PSIZE; // MeshTopology.Points の際の頂点の描画サイズを表す定義済セマンティクス
    float4 center: TEXCOORD0; // 描画する四角形の中心の座標
    float dist: TEXCOORD1; // 描画する頂点とカメラの間の距離
};

GitHub - keijiro/Pcx: Point cloud importer & renderer for Unity にも

These size properties are only supported on some platforms; It may work with OpenGLCore and Metal, but never work with D3D11/12.

と記載がある。

上記Pcxでは点群の描画にGeometoryShaderが使用されている。 下記は、PointCloudVRの点群描画をPcxを参考に、GeometoryShaderで描画するようにしたShader

DirectX11で動かなかった、、描画されない。

v2g, g2f を整理し不要な記述を削除し、PcxからのGeometryを追加しただけ。




参考

qiita.com

blog.negativemind.com

PointCloud Unity

.ply に対応

github.com

aec.unity3d.jp

.pts に対応

note.com

.off に対応

onetech.jp

rightcode.co.jp

assetstore.unity.com

注意

shader中の点群のサイズ指定の PSIZE は OpenGLCore等では正常に動作するが、DirectX11,12 では正常動作せず、サイズが反映されない。

Pcx ではGeometryShaderでの対応を行なっている。

イベントをTaskでawaitする

TaskCompletionSource を使用する

Timelineを再生し終了するまでのTask

public async Task ShowAhimAsync(CancellationToken token = default)
    {
        var tcs = new TaskCompletionSource<int>();

        System.Action<PlayableDirector> handler = null;
        handler = (obj) =>
        {
                playableDirector.stopped -= handler;
                tcs.SetResult(0);
        };
        playableDirector.stopped += handler;

        playableDirector.time = 0;
        playableDirector.Play(showAsset, DirectorWrapMode.None);

        using(token.Register(() =>
        {
            // キャンセル発生時の処理
            playableDirector.stopped -= handler;
            tcs.SetCanceled();
        }))
        {
            await tcs.Task;
        }
    }

var tcs = new TaskCompletionSource();

としたかったが、Unityでは使えないのか引数は必要なかったがnew TaskCompletionSource<int>()を使用している。

参考

qiita.com

zenn.dev

days-of-programming.blogspot.com

enrike3.hatenablog.com

qiita.com

qiita.com

osamuk.hatenablog.jp

note.com

AppleのUnityプラグイン

良さそう

UE5 でmp4が再生されないとき

デフォルトのWmfMediaではなくElectra Media Playerに切り替えることで解決する

LogWmfMedia: Error: Tracks ○○○: Format is not supported in D3D12. が出る時はほぼこれで解決すると。