以前にFloatFieldを作成した際(FloatFieldの作成)、横幅の計算にEditorWindow.positionを用いていました。しかし、スクロールバーが表示された場合、EditorWindow.positionはウィンドウの幅をであるためFloatFieldがスクロールバーで隠れてしまいます。そこで、横幅の計算をGUILayoutUtility.GetRectへ変更し、さらにPre […]
Editor拡張でポップアップウィンドウ作成する方法です。 その1 PopupWindowContentを継承したクラスを作成し、これをPopupWindow.Showでポップアップウィンドウとして開きます。 Script 下記Scriptでは、表示されたボタンを押すとポップアップウィンドウが開きます。このポップアップウィンドウ内に前回作成したラジオボタンを表示し、選択したボタンのインデック […]
EditorWindowでラジオボタンを作成する方法です。 GUILayout.SelectionGridを用いて作成 GUILayout.SelectionGridは選択したボタンのインデックスを返します。動作としてはラジオボタンと同じですが、実行すると このように、複数のボタンが並んだ状態で表示されます。このGUILayout.SelectionGridに、EditorStyle.radi […]
GUIStyleを自由に変更できるようSliderを自作しました。 Label、Slider、FloatFieldを横並びで表示 EditorGUILayout.Sliderによって作成されるコントロール(Label、Slider、FloatField)を別々に作成し、これらを横へ並べることでSliderを作成ます。これにより、各要素へ自由にGUIStyleを設定することができるようになります […]
EditorGUILayout.FloatFieldで作成したFloatFieldのラベルの色を変更しようとGUIStyleを変更したところ、テキスト入力部分のスタイルしか変更できませんでした。そこで、FloatFieldを自作することで、自由にラベルの色等を変更できるようにしました。 LabelFieldとFloatFieldを横並びで表示 FloatFieldを作成すると、ラベル部分(La […]
Unityではシェーダを視覚的に作成できる「Shader Graph」が使用できます。このShader Graphでは様々なノードが利用でき、それらを繫げることでシェーダを作成します。このノードの中にCustom Function Nodeがあり、これを利用することでオリジナルのノードを作成することができます。 ノードへ直接記述する方法 Shader Graphを開き、Custom Funct […]
パーリンノイズのタイリング 九個のQuadを並べ、シェーダでノイズ2(パーリンノイズ)で作成したパーリンノイズを生成すると このように、境界ができてしまいます。この原因と解決法を探るため、一次元パーリンノイズを並べたグラフと作成しました。 グラフの中央が境界となっています。パーリンノイズは青色の直線と赤色の直線を補間することにより求めています。このグラフより、青色と赤色の直線は一つの直線となって […]
Google Search Consoleで「data-vocabulary.org スキーマのサポートは終了します」という警告が大量に表示されました。パンくずリストの構造化データをdata-vocabulary.orgで記述していたことが原因でした。そのため、data-vocabulary.orgからschema.orgへ変更する必要があります。 当ブログではテーマにLion Blogを使用 […]
前回の記事(海洋シェーダ(反射と屈折))では、海面に反射して映るオブジェクトや海中の屈折して見えるオブジェクトを追加しました。今回は、海面に生じる泡の追加を行いました。 波の高さにより泡を生成 波が特定の高さになったときに泡を発生させます。波ごとに高さの判定を行っていますが、その際、波の振幅を計算から除外しています。これにより、振幅が低い波でも泡が発生するように処理をしています。また、泡のテク […]
前回の記事(海洋シェーダ(海の色))では、ノイズで変形させたゲルストナー波によって生成された波に、フレネル反射等を追加することで海を表現しました。この海へ、海面に反射して映るオブジェクトや海中にあるオブジェクトが透過して見える様子を追加しました。 海面の反射 以前作成した平面の鏡面反射を利用して、海面に反射して映る画像を取得します。取得した画像をそのまま表示するのではなく、スクリーン座標を海の […]