2017-01-01から1年間の記事一覧
今年も様々な方に有形無形を問わずお世話になりました。感謝の気持ちを込めて大晦日に多少長めの記事を書いてみました。よろしければごらんください。 課題の提示 まず、こちらの画像をご覧ください。 シーンに球体とポイントライトを一個配置しています。デ…
これは単なるメモ。 Unityを起動してプロジェクトを選択するとHold Onのダイアログで「Compiling Scripts」と表示されたまま先に進まなくなるという現象が頻発していました。この状態になるとプロセスを落とすしか解決策がなく、プロジェクトのLiberallyとTe…
「Unity #2 Advent Calendar 2017(https://qiita.com/advent-calendar/2017/unity2)」7日目になります。6日目はTeachさんによる「画像の色相を変更する.(https://qiita.com/Teach/items/52883127033885a95e82)」 でした。 自己紹介(飛ばしてOK) ちょ…
VisualStudioでshaderファイルを編集する際に、インテリセンスを機能させるためのプラグインでいいのが見つからずにいたのですが、ようやく実用レベルになるプラグイン「ShaderLabVS」を見つけました。以下導入手順を書いておきます。 導入手順 ShaderlabVS …
自分用メモ・「スカイボックス」というのは、Unityではマテリアルのことである。「マテリアルである」というのは「シェーダーである」とほぼ同じ意味である。 ・スカイボックスマテリアルは、Window>Lighting>Settingsの、Environment>Skybox Materialに設定…
「Alloy Physical Shader Framework」という、Defered Shading用に特化して開発され、UnityCGなど標準ヘルパーコードまで(多分)改造して作りこんでいる、有料シェーダーアセットがあります。これが、つい最近突如無料化し、界隈で話題になっていました。 h…
これまで食わず嫌い的に3Dプログラミングを避けて通ってきたこともあって、「こういう処理は3Dプログラミングでは通常こういうアプローチを取る」というのがわからず、難しいことではないのに解法にたどりつけない事がよくあります。今回もそのパターン…
公式ドキュメントのスカイボックスの作り方(https://docs.unity3d.com/jp/current/Manual/HOWTO-UseSkybox.html)だと、なぜか6面に個々に別の画像を使用する旧形式しか解説されていないので、Cubemapテクスチャ(https://docs.unity3d.com/jp/current/Man…
10月22日に開催される技術書オンリー即売会「技術書典3」にて、「Unityシェーダープログラミングの教科書 ShaderLab言語解説編」を初頒布します。表紙は盟友のふゆの春秋さんに描いて頂きました。「若者(学生)が武器(Unity)を手にした」というモチ…
気がつくと1カ月あけてしまって反省。つらつらと近況報告。 Unityシェーダープログラミング本書いてます 「Unityシェーダープログラミングマスターブック〜ShaderLab完全解説編〜」という同人誌を今書いてまして、次の技術書典で初頒布予定です(間に合えば…
飛び飛びで読んでいるので他にもあるかもしれません。気づいた時に更新しておきます。https://docs.unity3d.com/ja/current/Manual/RenderTech-DeferredShading.html 「Deferred Shading レンダリングパス」内「要件」第2パラグラフの訳がおかしく、こちらも…
この2週間はUnityシェーダープログラミング本を書くために、3Dゲームグラフィックスの技術漬けになっていました。 もともと3DCGは避けていた(ADV畑の自分は今後も2Dのゲームしか作らないだろうと思っていたから)のもあり、10年分くらいの知…
tsukasaスクリプトをC#コードに変換するトランスパイラを作っています。当初はrubyのparsletで書こうと思っていたのですが、parsletが気軽に動かせる代わりに字句解析器と構文解析器が分離していない点や、C#のプロジェクトに統合できない点から中止し、ANTL…
MonoBehavior派生クラスに設定されたpublicフィールドは、Inspector上から値を設定できます(SerializeField属性を設定すれば非publicフィールドでも編集できる)。設定された値は、ゲーム実行時にスクリプト側から取得できます。サンプルなどで非常に多用さ…
Debug.break()は何をしているのか Debug.break()を実行すると、Unityエディタでポーズボタンを押した時と同様に処理が一時停止します。実行時には以下の2点に気をつけてください。 ・単にポーズがかかるだけで、デバッガがアタッチしていてもブレークが発生…
RectTransformを持った空のGameObjectを作成する方法 canvas上で動作させるGameObjectは、通常のTransformではなくRectTransformを持たせる必要があるのですが、「RectTransformを持つ空のGameObject」を表すクラスは無いようで、動的に生成する場合は以下の…
コードを書いていて、どうにもおかしな挙動に悩まされた時の話。結論から言うと土屋の設定ミスだったんですが、Unityらしいハマり所と思ったので紹介しておきます。 不具合発生:3つのボタンのOnClickイベントが意図しない挙動をする。 canvas上にButtonを3…
Unityマニュアルのアニメーションの項は所々「誤訳では?」という所があるので気づいた所について。まあ、これだけの分量を日本語で読めるだけでもありがたい話ではあります。 以下幾つかの項目に私訳をつけていますが、各自の責任で運用してください。 Anim…
「Tips」と書いてはありますけど、単に土屋が導入時に気になった所をメモしてるだけです 【用語】アトラス ・複数の画像を1つの画像にまとめたもの。 ・複数の画像をアトラスにする作業を「アトラス化」とも言う。 ・UnityではSprite Packerなどで作成したS…
".mat"ファイルがショートカットとして認識されてしまう。 マテリアルデータを格納する".mat"ファイルが「Microsoft Office Access Table Shortcut」に関連付けられていて拡張子が表示されない場合(TortorizeGitで操作できなくて困った)。 対応 「コントロ…
お仕事でゲームエンジン研究をさせてもらえる事になりまして、現在Unityの勉強中です。ラーニング中で気づいたことや、はまったことについて雑多に書いていきます。間違っている個所もあるかと思うので指摘してもらえると助かります(いずれまとめられたらい…
今年後半は司エンジンを使ってゲームを一個作る予定で、次のuniq言語の記事はかなり先になりそうです。今回はメモも兼ねて、そもそもなんで冗長性の無い言語が必要なのかという話。 コーディング法(仮称) 第1回でも書きましたが、土屋はプログラマは国家…
でまあ「冗長性がないプログラミング言語」とはどういう物かと言いますと、よくわかりません(爆)。設計の過程で「別に冗長性は関係ないな」となったらタイトルを変えます。 起点 今回新しく言語を作ろうと思ったきっかけは、複数のエンジニアさんと話をし…
土屋はプログラミング言語の設計と実装が趣味です(この2年間くらい、本業以外で飽きもせずやっているのがこれだけだから趣味なんだと思う)。これまで作っていた司エンジン( http://d.hatena.ne.jp/t_tutiya/20170212/1486903365 )が、実用性はともかく…
前回書いた「「正しく書かれたソースコードにコメントは必要ない」なんて幻想だという話( http://d.hatena.ne.jp/t_tutiya/20170519/1495197904 )」は土屋のブログ記事にしては珍しくはてブやコメント、twitterで反響を幾つか頂きました。その中の幾つかを…
土屋はプログラマの中でもかなりコメントが多いタイプだと思っています。理想を言えばコード1行ごとにコメントを書きたいくらいです(本当は、識別子を全部日本語で書きたいと思っているのですが、これはまた別の話)。 これは土屋がPDL(Program Design La…
土屋つかさが書いた「ゲームプログラミングにユニットテストを導入する本」PDF版を無料公開します。以下のURLからどうぞ。 ゲームプログラミングにユニットテストを導入する本(土屋つかさ著/B5/本文26ページ) http://someiyoshino.main.jp/fil…
長々とやってきました「rubyゲーム開発にユニットテスト/テスティングフレームワークを導入する」シリーズもひとまず今回で一区切りになります(なぜならそろそろ作業を区切って同人誌の原稿執筆に入らないといけないからだ!)。今回はCIの導入です。 CI…
前回(http://d.hatena.ne.jp/t_tutiya/20170209/1486646849)まではユニットテストのフレームワークとして、Rubyに標準添付されているMinitestを使用していました。Minitestは実装がコンパクトで、最小限の知識があればテストが実行出来て便利なのですが、…
前回(http://d.hatena.ne.jp/t_tutiya/20170205/1486285294)、キー入力を管理するオブジェクト(正確にはモジュール)をエミュレートするモックオブジェクトを作成し、それを差し替えることで、実際にキー入力を行わなくても、同等のテストが可能であるこ…