土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

#Unity プロジェクト+VS2019環境でStyleCop.Analyzersを使用するために必要な4(+1)つの手順

StyleCopはいわゆるコードの静的解析ツールでして、VS2019の拡張パッケージとして提供されています。マイクロソフトが開発しているオープンソースプロダクトで、C#コードが推奨コーディングスタイルに準拠しているかを常時監視し、準拠していない箇所を指…

#unity レイマーチング入門(1) レイマーチングの原理

レイマーチング(Ray Marching)という描画手法があります。ポリゴンを空間に配置するのではなく、個々の物体を「距離関数(Signed Distance Function)」として定義し、その関数を介して物体がどのように空間に配置されているかを計算し、描画します。 レイ…

#unity VS2017からVS2019へ環境を移動する。

Unity2018を使っている環境にUnity2019をインストールするとVisual Studio 2019がインストールされないようで、毎回VS2017からVS2019に環境を移動するのに戸惑うのでメモっておきます。 下記サイト経由でVisual Studio Community 2019をダウンロードする(無…

#unity 新InputSystemを試そうとしてハマッた話

新しいInput Sysytemを使ってみようと思いまして、1.0.0のPackageをインストールし、下記公式ドキュメントのサンプルコードを実行してみました。https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/QuickStartGuide.htmlが、なぜかInputの…

#unity Camera.orthographicSizeプロパティドキュメント私家訳

Camera.orthographicSizeプロパティが翻訳されてなかったので私家版です。ところどころ意訳してるのでご自身の責任でどうぞ。 ちなみに8割Google翻訳。最近のGoogle翻訳ホント精度が上がってて助かる。 公式: https://docs.unity3d.com/ja/2019.1/ScriptRe…

頂点アニメーションとはなにか

9月19日に新宿で「カプコンオープンカンファレンス」というイベントが開催されました。メインはカプコンの内製ゲームエンジン「RE(アールイー)エンジン」の解説だったのですが、バイオハザード7やデビルメイクライ5で実際にどのような素材を作成~…

#unity canvasを作るとシーンに対して無茶苦茶大きく表示されてしまう問題(?)の対応方法

Canvasを使う時、毎回焦るのが、ヒエラルキーにCanvasを追加した時、通常のオブジェクトに対してCanvasがめちゃくちゃ大きなサイズでシーンに配置される事です。Canvas作るのって、基本的には新規プロジェクト開始時の1回しかやらないのでこれの対応方法を…

#Unity SRP(LWRP=UniversalRP)のシングルPassフォワードレンダリングとはなにか

シェーダー本4に向けてSRP(LWRP=UniversalRP)の勉強を始めています(ちなみに来春予定です。直近の技術書典には間に合わないですごめんなさい)。 今回はSRP(LWRP=UniversalRP)で採用されたシングルPassフォワードレンダリングについて SRPとはなにか…

#unity (C#)でFlatBuffersを使い倒す(5) バイナリデータレイアウト解説

今回はFlatBuffersでシリアライズされたバイナリデータが、実際にどのようなルールでメモリにレイアウトされているかを解説します。 使用するデータ 前回作成したバイナリデータの、メモリレイアウトを以下に示します。 ・"$00"は、バイナリデータ上の0番地…

ダミーボタンUI素材ジェネレーターを作りたかった

ゲームに限らないんですが、メニュー画面を実装する際、ひとまず仮で使うボタン画像の素材が欲しいという時がよくあります(……ありますよね?)。プロトタイプ制作時とか、まだレイアウトの仕様が決まっていないので各ボタンのサイズが決まっていないのだけ…

#unity (C#)でFlatBuffersを使い倒す(4) シリアライズ/デシリアライズのサンプルコード

いよいよデータのシリアライズ/デシリアライズを実行します。テストなので一個のプログラムで「データの作成→シリアライズしてファイルを保存→保存したファイルを読み込み→デシリアライズしてデータを再構築する」という手順を一気に行います。 Unityでの作…

#unity (C#)でFlatBuffersを使い倒す(3) スキーマファイルからコードジェネレートする

FlatBuffersを使う流れ FlatBuffersを使用するには、以下の3つの手順を経る事になります。 スキーマファイルを作り、flatc.exeでコードジェネレートする データをバイナリ配列にシリアライズしてファイルに保存する。 ファイルからバイナリ配列を読み込みデ…

#unity (C#)でFlatBuffersを使い倒す(2) FlatBuffersの導入手順

前回、ゲームで用いる数値データを管理する手段として一般的な、バイナリデータを構造体配列にマッピングする手法について解説しました。今回からは、FlatBuffersというフレームワークを使って、Unity(C#)上でシリアライズ/デシリアライズ処理を実装してい…

#unity (C#)でFlatBuffersを使い倒す(1) ゲーム開発時に数値系データを外部バイナリファイルで管理する方法

前回の記事でJSONデータを構造体配列に読み込むことができたので、次はこれをバイナリデータとしてシリアライズ/デシアライズする方法を検証します。どちらかと言えばここからが本番です。 しばらくはFlatBuffersというライブラリの挙動を検証します。実際…

#Unity JsonUtiltiyでモンスターデータのJSONファイルを構造体配列に読み込む

ゲームでは大量の(本当に大量の)数値データを管理する必要があり、そのデータをどのように管理するかは、ゲーム開発では常に重要なテーマとなります。ここで言う数値データとは、武器のデータやモンスターのデータ(構造体)などのことです。これらが容易…

Unityセーブデータ実装3原則【2019】

Unityでローカルにセーブデータファイルを保存したい時に、毎回やり方を失念してしまい、「あれ? どこに保存すればいいんだっけ? APIは何を使うんだっけ?」となってネットを漁ることになり非効率なので、また忘れても大丈夫なように、ここに「Unityセ…

Vue.jsを理解するシリーズ

ここ最近Vue.jsでの開発を延々しています。最後にJavaScriptをまともに勉強したのがRuby on rails用のCoffee Scriptな物で、Node.jsベースのモダンなWeb開発のスタイルがさっぱりわかりませんでした。一か月くらい浦島太郎状態が続いて、最近になってようや…

UnityTips 2019.1にプロジェクトを移行した時に出たエラーと対応処理

Unity2018.2で開発していたプロジェクトを2019.1で開くと「TextMeshProがどうたら(ちゃんと読んでない)」というエラーが大量に出て実行できなくなりました。これ、前にも起きてその時は色々操作してたらなんとかなったんですが、正しい解決方法を確認した…

Unityシェーダープログラミングの教科書3 ライティング&GI(大域照明)解説編

告知です。新刊同人誌「Unityシェーダープログラミングの教科書3 ライティング&GI(大域照明)解説編」のPDF版を、BOOTHさんに登録しました。 s-games.booth.pm また、本書の物理書籍版を、4月14日(日)に池袋で開催される技術書典6で頒布…

"unity シェーダー"で土屋のシェーダー本にリーチしないのが悔しい

悔しいのでエントリ名にしました。本文とは関係ありません。 シェーダー本3の作業が佳境に入っていましてブログを書く余裕がありません。小ネタを幾つかまとめて。 ハマりポイント:VisualStudioのアップデート Unity2018.3でちょっとしたC#コードをビルド…

#unity 2018.2と2018.3でLightingウィンドウのタブ切り替えボタンの仕様が変わってる

小ネタ。タイトル通り。シェーダー本3用にUIをスクショしている時に気づきました(マジかよ)。 2018.2まではこちら。ライトマップが、RealtimeもBakedもGlobal Mapsのタブに表示され、Object Mapsには選択中のオブジェクトの情報が表示されます。 2018.3…

#unity ShadowmaskモードとDistance Shadowmaskモードの違いについて

はじめに 現在、技術書典6に向けてシェーダー本の第3巻を執筆中です。当初の予定では、第3巻は「ライティング&GI(大域照明)編」と題して、Unityライティングシステムの解説と、エディタ上の各パラメータをシェーダーコード上で使用する方法について…

#unity Renderer.lightmapScaleOffsetプロパティ私訳

Renderer.lightmapScaleOffsetプロパティのについて正確な情報が必要になり、ドキュメントを訳出しました。2018.3版だと部分的に公式訳がなくなっていたので、欠落分を2017.3版から取得しています。原文:https://docs.unity3d.com/2018.3/Documentation/Scr…

#unity TextAssetを使ってcsvファイルをアセット化しUnityで読み込む

急にダミーデータが必要になり「csvファイルを最小工数でUnityに展開する方法ないかなー」とググッていたら、テキストアセット(TextAsset)なる物があると知りました。 note.mu これを使おうとしてしょっぱなでハマったのでメモ。 TextAssetアセット ドキュ…

#unity "Precomputed Realtime GI"の「事前計算」はいつなのかという話

UnityにおけるGI(Global Illumintaion. 大域照明)は、"Baked GI"という、ビルド時(あるいはもっと前)にシーンの間接光を計算し、そのカラー値をライトマップと呼ばれるテクスチャに書き込む(「ベイクする(焼き付ける)」と言います)物を指します。…

MeshRendererコンポーネントのLight Probes(ライトプローブ群)のドキュメント私訳

MeshRendererコンポーネントのパラメータであるLight Probesは、そのメッシュがライトプローブの影響をどう受けるかをOff/Blend Probes/Use Proxy Volume/Custom Providedの4つから選択します。この値は内部的にはMeshRenderer.lightProbeUsageプロパティに…

Unity 2018.3からMesh Rendererインスペクタのレイアウトが大幅に変更されてた

ふとUnityを眺めていたら、Mesh Rendererインスペクタのレイアウトが2018.3から、レイアウトが大幅に変更されていたことに気づきました。 左が2018.2、右が2018.3です。プロパティの構成要素自体は変化してませんが、いくつかの名称が変更されていたので、以…

Unityライセンスはバージョンごとに紐付けされているという話

※すみません以下のエントリ勘違いかも。追記参照。 Unityは去年からPlusの年間ライセンスを購入しています(もちろん個人で)。とはいえ、去年は結局アプリをリリースすることがなかったので、ダークUIテーマにして楽しむくらいしか意味なかったですけど………

Unity2019.Xについての根拠の無い国内展開予測12個

ツイッターで「今年の技術発展予測をして年末に答え合わせすると自己認識のキャリブレーションになる」というのを見て、面白そうだったのでUnityについて考えてみました。Unity2019.Xが採用する技術と、その国内での展開の予測です。当然ながら(?)主にシ…

Standard ShaderのEmissionを自作シェーダーに組み込みたかった(過去形)

Standard ShaderにEmissionという項目があります。 docs.unity3d.com これはオブジェクト自体を発光体にする物で、オプション選択で、ライトマップにベイクしたり、ライトプローブにリアルタイム反映させたりできます。とはいえ、その「ライトマップにベイク…