Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Kazuya Hiruma
2,778 views
ARグラスで 魅力的な絵作り
XR Kaigi 2019で発表した資料です。 ARグラスであるNreal Lightで魅力的な絵作りをする方法について発表しました。
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 53
2
/ 53
3
/ 53
4
/ 53
5
/ 53
6
/ 53
7
/ 53
8
/ 53
9
/ 53
10
/ 53
11
/ 53
12
/ 53
13
/ 53
14
/ 53
15
/ 53
16
/ 53
17
/ 53
18
/ 53
19
/ 53
20
/ 53
21
/ 53
22
/ 53
23
/ 53
24
/ 53
25
/ 53
26
/ 53
27
/ 53
28
/ 53
29
/ 53
30
/ 53
31
/ 53
32
/ 53
33
/ 53
34
/ 53
35
/ 53
36
/ 53
37
/ 53
38
/ 53
39
/ 53
40
/ 53
41
/ 53
42
/ 53
43
/ 53
44
/ 53
45
/ 53
46
/ 53
47
/ 53
48
/ 53
49
/ 53
50
/ 53
51
/ 53
52
/ 53
53
/ 53
More Related Content
PDF
レイマーチ入門勉強会資料
by
Kazuya Hiruma
PDF
シリコンスタジオの最新テクノロジーデモ技術解説
by
Silicon Studio Corporation
PDF
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
by
UnityTechnologiesJapan002
PPTX
Unityのポストエフェクトで遊ぶ!
by
Yamato Honda
PDF
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
by
Masafumi Takahashi
PPTX
Shadow gunのサンプルから学べるモバイル最適化
by
Katsutoshi Makino
PDF
UE4を使った クロスシミュレーションと、 ハイエンド・モバイルゲーム制作の奥義を伝授!
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
UE4.17で入る新機能を一気に紹介・解説!
by
エピック・ゲームズ・ジャパン Epic Games Japan
レイマーチ入門勉強会資料
by
Kazuya Hiruma
シリコンスタジオの最新テクノロジーデモ技術解説
by
Silicon Studio Corporation
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
by
UnityTechnologiesJapan002
Unityのポストエフェクトで遊ぶ!
by
Yamato Honda
次の世代のインタラクティブレンダリング5つの挑戦と10の滅ぶべき技術
by
Masafumi Takahashi
Shadow gunのサンプルから学べるモバイル最適化
by
Katsutoshi Makino
UE4を使った クロスシミュレーションと、 ハイエンド・モバイルゲーム制作の奥義を伝授!
by
エピック・ゲームズ・ジャパン Epic Games Japan
UE4.17で入る新機能を一気に紹介・解説!
by
エピック・ゲームズ・ジャパン Epic Games Japan
Similar to ARグラスで 魅力的な絵作り
PDF
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
by
Takahiro Harada
PPTX
リアルタイムレイトレーシングを用いたNPRペイント風レンダリング|CEDEC2025
by
Silicon Studio Corporation
PDF
#devsumi 12-A-3 Physicalization of Computer Graphics
by
Yoichi Ochiai
PDF
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
by
Unity Technologies Japan K.K.
PDF
GDC2013 Visual Art系セッション報告
by
Takashi Iwade
PDF
そうだRTシェーダをはじめよう
by
fumoto kazuhiro
PDF
Web GLの話
by
Norihito YAMAKAWA
PPTX
ITフォーラム2020 AITC(3)
by
aitc_jp
PPTX
GCM#4 アーティストのためのプログラマブルシェーダー講座Part2
by
GREE/Art
PDF
物理ベース?アート指向? ~尤もらしさと自由度を両立するレンズフレア表現
by
Silicon Studio Corporation
PDF
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
Unreal Studio+プロダクトデザインのワークフロー
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
by
omochi64
PPTX
マテリアルエディタで作るVFX
by
Akihito Chiba
PDF
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
by
com044
PPTX
Houdini Mantra レンダリングのチューニング
by
Ken Taki
PDF
Flashup 12 Basic Training of Away3D
by
Katsushi Suzuki
PPTX
【Unity道場スペシャル 2017博多】Unityと歩んだCC2アプリ開発の舞台裏
by
Unity Technologies Japan K.K.
PDF
Unreal Studio 最新情報
by
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識
by
Unity Technologies Japan K.K.
Introduction to Bidirectional Path Tracing (BDPT) & Implementation using Open...
by
Takahiro Harada
リアルタイムレイトレーシングを用いたNPRペイント風レンダリング|CEDEC2025
by
Silicon Studio Corporation
#devsumi 12-A-3 Physicalization of Computer Graphics
by
Yoichi Ochiai
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
by
Unity Technologies Japan K.K.
GDC2013 Visual Art系セッション報告
by
Takashi Iwade
そうだRTシェーダをはじめよう
by
fumoto kazuhiro
Web GLの話
by
Norihito YAMAKAWA
ITフォーラム2020 AITC(3)
by
aitc_jp
GCM#4 アーティストのためのプログラマブルシェーダー講座Part2
by
GREE/Art
物理ベース?アート指向? ~尤もらしさと自由度を両立するレンズフレア表現
by
Silicon Studio Corporation
CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
by
エピック・ゲームズ・ジャパン Epic Games Japan
Unreal Studio+プロダクトデザインのワークフロー
by
エピック・ゲームズ・ジャパン Epic Games Japan
輪読発表資料: Efficient Virtual Shadow Maps for Many Lights
by
omochi64
マテリアルエディタで作るVFX
by
Akihito Chiba
[UE4]マテリアルの注意すべきこと!~テクスチャロードとSwitch~
by
com044
Houdini Mantra レンダリングのチューニング
by
Ken Taki
Flashup 12 Basic Training of Away3D
by
Katsushi Suzuki
【Unity道場スペシャル 2017博多】Unityと歩んだCC2アプリ開発の舞台裏
by
Unity Technologies Japan K.K.
Unreal Studio 最新情報
by
エピック・ゲームズ・ジャパン Epic Games Japan
今だから聞きたい!Unity2017/18ユーザーのためのUnity2019 LTS基礎知識
by
Unity Technologies Japan K.K.
More from Kazuya Hiruma
PDF
Jump & Coin - 空間を超えるゲーム体験 - | LODGE XR TALK
by
Kazuya Hiruma
PDF
MESONプロジェクトから学ぶこれからのAR開発に必要なこと
by
Kazuya Hiruma
PDF
PORTAL with Nreal in CES 2020 開発の学び @XR Hub
by
Kazuya Hiruma
PDF
AWE Nite ARKit3 Hackathon
by
Kazuya Hiruma
PDF
MESONで手がけたARアプリ AR Developer Meetup #2
by
Kazuya Hiruma
PDF
みんなレイ飛ばしてる?
by
Kazuya Hiruma
PDF
VRゲーム制作楽しいよ! @UnityおとなのLT大会
by
Kazuya Hiruma
PDF
ElminaAR - Unity x ARKit 入門Meetup
by
Kazuya Hiruma
PPTX
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
by
Kazuya Hiruma
PPTX
UnityでARKitハンズオン
by
Kazuya Hiruma
PPTX
すぐそこにある未来〜AR〜
by
Kazuya Hiruma
PPTX
VRで酔わないコンテンツ作り
by
Kazuya Hiruma
PPTX
WebVRコンテンツ制作入門
by
Kazuya Hiruma
PPTX
WebVRってこんなことできるよ!
by
Kazuya Hiruma
PPTX
そしてWebVR
by
Kazuya Hiruma
PPTX
Unity入門ハンズオン
by
Kazuya Hiruma
PPTX
WebVR 酔いづらいコンテンツの作り方
by
Kazuya Hiruma
PPTX
WebVRことはじめ
by
Kazuya Hiruma
PDF
集まっTail #5 LT
by
Kazuya Hiruma
PPTX
WebGL入門LT大会資料
by
Kazuya Hiruma
Jump & Coin - 空間を超えるゲーム体験 - | LODGE XR TALK
by
Kazuya Hiruma
MESONプロジェクトから学ぶこれからのAR開発に必要なこと
by
Kazuya Hiruma
PORTAL with Nreal in CES 2020 開発の学び @XR Hub
by
Kazuya Hiruma
AWE Nite ARKit3 Hackathon
by
Kazuya Hiruma
MESONで手がけたARアプリ AR Developer Meetup #2
by
Kazuya Hiruma
みんなレイ飛ばしてる?
by
Kazuya Hiruma
VRゲーム制作楽しいよ! @UnityおとなのLT大会
by
Kazuya Hiruma
ElminaAR - Unity x ARKit 入門Meetup
by
Kazuya Hiruma
今すぐ始められるモバイルVR〜あなたも今日からVRエンジニア〜
by
Kazuya Hiruma
UnityでARKitハンズオン
by
Kazuya Hiruma
すぐそこにある未来〜AR〜
by
Kazuya Hiruma
VRで酔わないコンテンツ作り
by
Kazuya Hiruma
WebVRコンテンツ制作入門
by
Kazuya Hiruma
WebVRってこんなことできるよ!
by
Kazuya Hiruma
そしてWebVR
by
Kazuya Hiruma
Unity入門ハンズオン
by
Kazuya Hiruma
WebVR 酔いづらいコンテンツの作り方
by
Kazuya Hiruma
WebVRことはじめ
by
Kazuya Hiruma
集まっTail #5 LT
by
Kazuya Hiruma
WebGL入門LT大会資料
by
Kazuya Hiruma
ARグラスで 魅力的な絵作り
1.
@XR Kaigi 2019 ARグラスで 魅⼒的な絵作り 比留間
和也
2.
2 1. ⾃⼰紹介 2. 会社紹介 3.
プロダクト紹介 3-1. PORTAL紹介 4. PORTALをNreal Lightに移植中の話 CONTENTS
3.
3 ⾃⼰紹介 Self introduction
4.
4 @edo_m18 @edom18 http://edom18.hateblo.jp/e.blog: ⽐留間 和也
5.
5 MESONの紹介 MESON introduction
6.
6 1. 制作体制 2. テキストのみ 2-1.
テキストA 2-2. テキストB 3. テキストと写真 4. 図系
7.
7 Nreal Lightエヴァンジェリスト Nreal Lightのエヴァンジェリストに
8.
8 プロダクト紹介
9.
9 プロダクト紹介 ⾼精細にスキャンしたモデルたちがARランウェイの上を歩き、 それに実際に近づいて⾒てもらうコンテンツ。 PORTAL
10.
CONFIDENCIAL PAGE PORTAL X10
11.
11 AUGGIE AWARDSファイナリスト AUGGIE AWARDSという海外のアワードで ソフトウェアとしては⽇本初のファイナリストに選出されました。 AR/VRで最⼤のAUGGIE
AWARDSにてファイナリストに選出
12.
12 PORTALをNreal Lightに移植中の話 Import the
PORTAL to the Nreal Light
13.
13 現在、CES向けにPORTALをNreal Lightに移植中
14.
14 PORTALの移植で⼤事にしたこと
15.
15 Interaction インタラクション Graphic グラフィック Effect 演出 PORTALの移植で⼤事にした点 iPad版にも劣らないようなグラフィック作り ARグラスならではのインタラクション設計 PORTALのイメージであるパーティクル演出
16.
16 移植にあたっての課題
17.
17 iPad版に⽐べて ⾊味が明るすぎる 視野⾓の端にモデルを 配置すると枠が気になる パーティクルを ⼤量に出すための⼯夫 移植にあたっての課題 1 2 3
18.
18 1. iPad版に⽐べて⾊味が明るすぎる
19.
19 iPad版に⽐べて⾊味が明るすぎる PCで⾒た絵 ARグラス越しの絵 PCディスプレイで⾒た場合の⾊味 Nreal
Lightで⾒た場合の⾊味 無加⼯だと⾊味が全然違う
20.
20 課題はコントラスト 全体的に明るすぎてコントラストが低い ⾊に応じてコントラストを調整したい ※単純に黒を⾜して明るさを調整しても輝度が下がるだけ
21.
21 iPad版に⽐べて⾊味が明るすぎる PCで⾒た絵 ARグラス越しの絵 中⼼が無加⼯。右が⾊を2乗したもの 左は単純に黒を⾜したもの 加⼯したものが⼀番くっきりと⾒える 改善した状態
22.
22 ⾊を2乗する(コントラストを上げる) fixed4 frag(v2f i)
: SV_Target { fixed4 col = tex2D(_MainTex, i.uv); col.rgb = pow(col.rgb, 2.0); return col; } コード的にはシンプルだが効果は絶⼤
23.
23 2. 視野⾓の端にモデルを配置すると枠が気になる
24.
24 視界付近にモデルを配置すると枠が気になる 枠の端でぱっきりと切れると「枠」が意識される 視界の端でぱっきりと切れる
25.
25 視界付近にモデルを配置すると枠が気になる フェードアウトさせると区切りが意識されなくなる 視界の端をフェードアウトさせる
26.
26 ポストプロセスで上下左右の際をフェードアウトさせる 画⾯端に近づくにつれてフェードアウトさせるポストエフェクトを書く
27.
27 ポストプロセスで上下左右の際をフェードアウトさせる fixed4 frag(v2f i)
: SV_Target { fixed4 col = tex2D(_MainTex, i.uv); float2 uv = abs(i.uv * 2.0 - 1.0); float2 u = _Width / _ScreenParams.xy * 0.5; u = smoothstep(0, u, 1.0 - uv); col = col * u.x * u.y; return col; } UV値を利⽤して画⾯端に近づくにつれてフェードさせる (ARグラスは黒=発光しない=透明になっていく)
28.
28 3. パーティクルを⼤量に出すための⼯夫
29.
29
30.
30
31.
31
32.
32 シーン内の⼤量のパーティクルが 様々なオブジェクトの形に姿を変える
33.
33 移植する上での課題 1. 10万弱のパーティクルを描画する 2. 複数モデルグループをパーティクル処理 3.
モデル以外の形状にも変化する 4. 常に⽣成済パーティクルを利⽤する (新規⽣成はしない)
34.
34 処理フロー
35.
35 処理フロー 1. ターゲットのメッシュ情報を集める 2. (1)のデータをグルーピング 3.
Compute Shaderで位置計算 4. GPU Instancingで描画
36.
36 Compute Shaderのセットアップ
37.
- その場で、ランウェイに登 場する服の素材感を知るこ とができる 37 利⽤するカーネルは3つ Update ExplosionCalculate 01
02 03 パーティクルのターゲットを 更新する ターゲットがない形状に 変形させる パーティクルの位置を 計算・更新する
38.
38 パーティクルの位置更新 [numthreads(THREAD_NUM,1,1)] void Calculate(uint id
: SV_DispatchThreadID) { Particle p = _Particles[id]; float3 pos = (p.targetPosition - p.position) * _DeltaTime * p.speed; p.position += pos; p.useTexture = 1; _Particles[id] = p; } パーティクルの位置を毎フレーム更新
39.
39 パーティクルのターゲット変更 [numthreads(THREAD_NUM,1,1)] void Update(uint id
: SV_DispatchThreadID) { Particle p = _Particles[id]; float4x4 mat = _MatrixData[_InitDataList[id].targetId]; p.isActive = _InitDataList[id].isActive; p.targetPosition = mul(mat, float4(_InitDataList[id].targetPosition, 1.0)).xyz; p.uv = _InitDataList[id].uv; p.targetId = _InitDataList[id].targetId; _Particles[id] = p; } パーティクルのターゲット先を変更(更新)する
40.
40 パーティクルのターゲット変更 [numthreads(THREAD_NUM,1,1)] void Explosion(uint id
: SV_DispatchThreadID) { Particle p = _Particles[id]; if (_OnCircle == 1) { float h = rand(p.id); float s = sin(p.id + _Time) * 1.5; float c = cos(p.id + _Time) * 1.5; float3 pp = float3(s, h * 1.5, c) + noise(p.position); float3 pos = (pp - p.position) * _DeltaTime * p.speed; p.position += pos; p.color = float4(1, 1, 1, 1); p.useTexture = 0; } else { float h = rand(p.id); float3 pos = (p.targetPosition + float3(0, cos(h + _Time) * 0.01, 0) - p.position) * _DeltaTime * p.speed; p.position += pos; } p.color = float4(1, 1, 1, 1); p.useTexture = 0; _Particles[id] = p; } 別形状のためのカーネル
41.
41 C#側のセットアップ
42.
42 メッシュの情報を集める public class ParticleTarget
: MonoBehaviour { private Mesh _mesh = null; public Mesh Mesh => _mesh ?? (_mesh = GetComponent<MeshFilter>().mesh); private Renderer _renderer = null; private Renderer Renderer => _renderer ?? (_renderer = GetComponent<Renderer>()); public int VertexCount => Mesh.vertexCount; public Vector3[] Vertices => Mesh.vertices; public Vector2[] UV => Mesh.uv; public Matrix4x4 WorldMatrix => transform.localToWorldMatrix; public Texture2D Texture => Renderer.material.mainTexture as Texture2D; } シンタックスシュガー的にデータを渡すだけのコード
43.
43 頂点、UV情報をひとつの配列にまとめる private void CollectAllData() { int
count = GetCount(); _allVertices = new Vector3[count]; _allUV = new Vector2[count]; int idx = 0; foreach (var t in _targets) { System.Array.Copy(t.Vertices, 0, _allVertices, idx, t.Vertices.Length); System.Array.Copy(t.UV, 0, _allUV, idx, t.UV.Length); idx += t.Vertices.Length; } } グループの頂点などをメモリアクセスしやすいように配列にまとめる
44.
44 ターゲットモデルのマトリクスをまとめる private void UpdateMatrices(ParticleTargetGroup
group) { for (int i = 0; i < group.ParticleTargets.Length; i++) { _matrixData[i] = group.ParticleTargets[i].WorldMatrix; } _matrixBuffer.SetData(_matrixData); _computeShader.SetBuffer(_kernelSetup, _propertyDef.MatrixDataID, _matrixBuffer); } 各頂点の⾏列計算はシェーダで⾏うためMatrixデータをまとめてGPUに送る
45.
45 テクスチャをTextureArrayにまとめる private void CreateTextureArray() { int
count = _targets.Length; int width = _targets[0].Texture.width; int height = _targets[0].Texture.height; _textureArray = new Texture2DArray(width, height, count, TextureFormat.RGBA32, false, true); _textureArray.filterMode = FilterMode.Bilinear; _textureArray.wrapMode = TextureWrapMode.Repeat; for (int i = 0; i < _targets.Length; i++) { _textureArray.SetPixels(_targets[i].Texture.GetPixels(0), i, 0); } _textureArray.Apply(); } Matrix同様、テクスチャもシェーダ側でアクセスするためTextureArrayにまとめる
46.
46 描画
47.
47 GPUインスタンシングで描画 v2f vert (appdata
v, uint id : SV_InstanceID) { Particle p = _Particles[id]; v2f o; v.vertex.xyz = (v.vertex.xyz * _BaseScale) + p.position; o.vertex = mul(UNITY_MATRIX_VP, float4(v.vertex.xyz, 1.0)); o.uv.xy = p.uv.xy; o.uv.z = p.targetId; o.color = p.color; o.texid = p.targetId; o.useTex = p.useTexture; return o; } fixed4 frag(v2f i) : SV_Target { fixed4 col; if (i.useTex == 1) { col = UNITY_SAMPLE_TEX2DARRAY(_Textures, i.uv); col = pow(col, 1.5); } else { col = i.color; } return col; } Compute Shaderの計算に基づいてパーティクルをレンダリングする 頂点シェーダ フラグメントシェーダ
48.
48 GPUインスタンシングで描画 DrawMeshInstancedIndirectメソッドで⼀度に描画 private void DrawParticles() { Graphics.DrawMeshInstancedIndirect( _particleMesh, 0,
// submesh index _particleMat, new Bounds(Vector3.zero, Vector3.one * 32f), _argsBuffer, 0, null, UnityEngine.Rendering.ShadowCastingMode.Off, false, gameObject.layer ); }
49.
49
50.
50 Nreal Light(Android)でも現実的なレベルで動く!
51.
51 iPad版に⽐べて ⾊味が明るすぎる 視野⾓の端にモデルを 配置すると枠が気になる パーティクルを ⼤量に出すための⼯夫 まとめ ⾊を2乗する 視界の端を フェードさせる Compute Shaderで がんばる
52.
52 ご静聴ありがとうございました
53.
53 @edo_m18 @edom18 ⽐留間 和也 http://edom18.hateblo.jp/e.blog: MESONではARグラス時代のユースケースを開発する エンジニアを積極募集中です。 興味がある⽅はぜひご連絡ください! MESON
Download