投稿

ラベル(Unity)が付いた投稿を表示しています

GPG数学:ドラゴン曲線

イメージ
久しぶりのGPGシリーズです。 今日話す内容はドラゴン曲線(dragon curve)です。 出所: https://en.wikipedia.org/wiki/Dragon_curve この曲線を初めて見たのは映画で有名になった小説 「Jurasicc Park」のチャプターに描かれた絵でした。 大体のFractial図形がそうですが、複製→変換→統合 の繰り返して精度が高く美しい曲線になります。 ドラゴン曲線の作り方(出所:Wikipedia) ドラゴン曲線に場合、Iterationが重ねると囲碁盤みたいな グリッド領域が広がりますが、この曲線の特徴は 1つの線が交差せず(角が当たる事はあり)始点から 終点まで繋がっている事です。 その広い囲碁盤の中身がどうなっているか確認のため 90度に曲がる部分をラウンド処理して描いてみました。 プログラムではなくフォトショップで描いた画像です。 そして、1つの線がどの経路で繋がっているのかを 見やすくするため、グラデーション色をつけてみました。 結構綺麗なカーブになって壁紙にしたいくらいです。 ついでに、Iterationによって曲線の変化を確認する 簡単なWebアプリをUnityで実装してみました。 https://habanero.jp/playground?id=dragoncurve  ※モバイルでは正しく表示されない事があります。 ソースコードはここでダウンロードできます。 https://github.com/shintec/dragoncurve 久々に良い脳トレになりました。

UnityでOculus開発設定(Silicon Mac用)

イメージ
こんにちは 前回のポスティングでVR設定について話しました。 UnityでVR開発環境設定 その時、Silicon Mac(M1チップ搭載Mac)では Oculus plug-in設定時クラッシュすると書きましたが、 UnityフォーラムでSilicon MacでOculus Pluginの 設置方法が書いてあったので、改めて VR設定方法を記録しておきます。 参考URL: https://forum.unity.com/threads/macbook-pro-m1-oculus-crash.1017730/ 開発環境はMacbook Pro 13inch(M1チップ)で Unityバージョンは2020.2.0です。 Oculus Plugin設置(1.7.0バージョン) XR plug-in Management設置後、Oculus XR Pluginを 設置する時、Package Managerでバージョンを 1.7.0に選びます。(previewバージョン) Oculus Integration設置 Oculus Integrationを設置する時 AudioPluginOculusSpatializer.bundleを除きます。 Unity 2020バージョンからAsset Storeが Package Managerに統合されました。 AudioPluginOculusSpatializer.bundleを外す 他の設定は前回話したように設定すれば 問題なくapkがビルドできます。 おまけ 以下のブログにOculusアプリの最適化オプション について書いてありますので、ご参考ください。 https://developer.oculus.com/blog/tech-note-unity-settings-for-mobile-v...

UnityでVR開発環境設定(Oculus Quest基準)

イメージ
この間、VRゲームを開発する機会があったので その時行ったUnityのVR設定方法を記録しておきます。 ※注意事項 Unityバージョンは2019.4.16に合わせる Oculus PluginはUnityバージョンに敏感なので バージョンが合わないと設定できない事があります。 SiliconMac(M1チップ搭載Mac)では設置できません。 (SiliconMac対応Unityを待つしかない。。。) 事前作業 開発者モード活性化 確認されない開発者アプリを起動する事ができます。 SideQuest設置 SideQuestでapkファイルを直接デバイスに入れます。 プロジェクト生成 3DやUPRを選択 (HDRPはOculus Questには少し重いです) PlatformをAndroidに変換 File → Build SettingsでSwitch Platform選択 XR Pluginマネジャーを設置 Edit → Project Settingsの XR Plug-in Managementタブで設置 Oculus Pluginを設置 XR Plug-in ManagementのAndroidタブで Plug-in Providers → Oculusをチェック Oculus Integrationを設置 Asset StoreでOculusで検索して設置 途中でOculus Plug...

丸いフチを描くシェーダー

イメージ
 UnityのUIで円形のイメージを取り扱うのは 意外と面倒な作業です。 ビットマップは拡大や縮小でサイズを変更すると どうしても画像がボケてしまいます。 その理由で、UIで使うビットマップイメージは できれば元本サイズで描画するようにしています。 特に、丸いフチの四角形はUIで良く使われる形なので 角の半径によって複数サイズのイメージを 用意しないといけないのが面倒くさいです。 サイズ関係なくキレイな円を描く方法はないのか? それで調べた結果、良いものを見つけました。 Unity-UI-Rounded-Corners イメージの角を丸く描画するシェーダー Github URL :  https://github.com/kirevdokimov/Unity-UI-Rounded-Corners シェーダーを使って半径を設定するとイメージの 角を丸く描きます。 特にuGUIと相性が良くて、既存Imageの機能と 競合しないのが素晴らしいです。 UnityEngine.UI.Buttonへ適用した姿 このシェーダーの面白い機能は、各角ごとに それぞれ半径を設定することです。 半円形のUI構成する時に助かります。 これで一つ悩みが解決されてスッキリしました。 素敵なシェーダーを作ってくれた製作者に感謝

Unity WebGLの日本語入問題と対策

イメージ
Unityはゲーム制作について、とても素晴らしいツールであり、更なるアップデートで進化を続けています。 しかし、そんな完璧に見えるツールでもまだ改善する所はあります。 今日の話は 入力フィールドのUnicode入力 です。 Unityで提供している入力フィールド(UnityEngine.UI.InputField) プラットフォームによって、デバイスが提供しているIME (入力装置) を完全に対応する (モバイルなど) プラットフォームもありますが、Webプラットフォームについては、そうではありません。 WebGLの場合、基本提供しているInputFieldで 日本語入力ができない ことが分かります。 (英文字なら問題なく入力可能) その理由は、「 ブラウザIMEのアクセス権限をUnity側が持ってない」  からです。それで、特殊なIME (日本語のromaji入力や組み合わせ入力など) の入力が、思い通りに動かないです。 これはゲームの中でプレイヤーの名前を入れたり、チャット機能などを実装する時、ややこしい問題になります。 WebGL用入力問題を解決する方法について、色々検索してみましたところ、 「WebGLNativeInputField」 というパッケージを見つけました。 https://github.com/unity3d-jp/WebGLNativeInputField こちらのデモで動作確認ができます。 https://unity3d-jp.github.io/WebGLNativeInputField このパッケージを使うと、WebGLでも日本語入力が問題なくできます。 (僕が調べた限り、これがUnityのWebGLで日本語入力できる唯一な対策ではないかと思われます。) ただ1つ問題があるとすれば、 (製作者の方には申し訳ないですが) 入力するとき、 別途のUIが出てくる ことです。 入力フィールドを触るとこのポップが出る オーバーレイタイプも選択可能(こっちの方が少し自然に見えます。) そもそも、WebGLNativeInputFieldで使われた方法は、 「Unity上の入力フィールドを使うことではなく、ブラウザ上に...