はじめに Blenderで山に囲まれたSkyboxを作り、 Unityで表示する方法について説明します。 Blender アドオンの有効化 以下アドオンを有効にします Edit>Preferences>Add-ons Add Mesh ANT Landscape Node Wrangler Dynamic Sky 山と地面を作る Shift+A>Empty…
はじめに UnityのShaderLabを使って流れる雲を作る方法を説明します。 UVスクロールを使うことで雲がアニメーションします。 ノーマルマップを使うことで影をつけます。 テクスチャを作る 雲のテクスチャ 雲のテクスチャを作成します。今回はGIMPで作成しま…
VRChatの開発ツール導入ではなく、UdonSharpで開発・テストする上での ノウハウをまとめた記事になります。 独学なのでこれが正しい・最適とは限らないことに注意です。 VRChatの説明ですが、ほかのプラットフォームでも使えるはずです。 方針 Unityはクラッ…
はじめに BlenderやUnityでは簡単に木を作ることができますが、 重いという問題点があります。そこで、木を板ポリにすることで 軽くする方法を説明します。 板ポリを十字に配置することで回り込みにもある程度対応します。 手順 Blenderで木を作る Edit > Pr…
はじめに UnityのCharacterControllerは便利ですが、 リアルな挙動ができるなどRigidbodyを使う方が自由度が高く 利点がある場合もあります。 そこでRigidbodyを使いCharacterControllerの機能をいくつか実装することで 両方の利点を生かす方法を考えます 方…
はじめに Unityで3Dホーミング弾を作ります。 Rigidbodyを使いリアルな挙動を目指します。 方針 Rigidbody.AddForce、ForceMode.Forceを使う ターゲットの方向に力を与える PIDを使い速度が一定になるように制御を行う 力は最大値以上にならないようにする …
はじめに Unityで飛行機のコックピット風の高度計を作る方法を説明します 考え方 高度20mをステップ0、高度25mをステップ1のように 高度をステップで表します。 求めるのはキャンバス0地点から現在のステップまでのステップ transStepです。 presentStep : …
はじめに 通常のゲームでレティクルを表示する時は 2Dスクリーン上に投影する方法がありますが、 VRでは360°画面のためこの方法が使えません。 この記事ではVRChat UdonSharpを使い レティクルを表示する方法を説明します。 考え方 プレイヤーの頭(Head)の周…
コード 以下はCubeゲームオブジェクトにAddComponentScriptPathScriptスクリプトを AddComponentする例です。 using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class AddComponentScriptPathEdi…
コード 以下はゲームオブジェクトCanvasのコンポーネントEditorButtonScript の関数OnClickを、ゲームオブジェクトButtonのボタンクリックイベントに 登録するコードです。 #if UNITY_EDITOR using UnityEngine; using UnityEditor; using UnityEditor.Event…
はじめに VRChat UdonSharpの同期手法であるSendCustomNetworkEvent は関数に引数を渡すことができません。 そこで、変数同期を使い疑似的に、複数引数を持つ関数を 同期する手法について説明します。 コード 以下は関数SendMyEvent1, SendMyEvent2を同期す…
検証 Blender Version : 3.2.1 コマンドラインからスクリプトを実行する sample.blendを起動し、sample.pyを実行する例です "C:\Program Files\Blender Foundation\Blender 3.2\blender.exe" sample.blend --python sample.py import bpy def _override_cont…
はじめに Mixamoは大量の3Dモデルのアニメーションが無料で利用できるサイトです。 またMixamo公式からControl Rig(IK)を設定するBlenderアドオンが公開されており、 簡単にアニメーションを作成できます。 今回はMixamoアニメーションを自作のモデルに適用…
はじめに Unityでつけたボーンポーズを出力して、 Blenderのボーンポーズに適用するスクリプトを作成しました。 Blenderのボーンウェイトの調整の時、 Unityの物理演算で設定されたポーズにしたかったのが目的です。 手順 以下方針で行います。 Unityのボー…
はじめに CGや画像処理で必要になる座標変換について説明します。 座標変換は同次変換行列という形式で表すことで、 すべて行列の掛け算で行うことができます。 表記 座標Aから見た点pの座標がである時、 次のように表記します。 移動 座標Aから見た座標Bへ…
はじめに Markdown中のTex数式は、Webサイトによってサポートされていなかったり、 方言があったりします。 また、JavaScriptのTex数式変換ツールであるMathJaxがありますが、 レンダリングが遅いという問題があります。 そこで、Tex数式をMathJaxを使い事前…
はじめに PandocはMarkdownからHTML変換など、マークアップ言語を 別の形式に変換するツールです。 また、Pandoc filterという仕組みを使用することで、 変換書式を自作することができます。 ここでは、PandocとPython Pandoc filterを 使用するための環境構…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > The Style Sheet Syntax - スタイルシート詳細 リファレンス2:Qt 5.5 > Qt Widgets > Qt Style Sheets Reference - プロパティ一覧,サブコントロール一覧など スタイルシー…
PyQt5入門 PythonでGUI作成 - yu00’s blog スタイルシート PyQt5でフォントや色を設定するにはスタイルシート を使うと簡単です.スタイルシートはHTML CSSのような形式でスタイルを 設定する機能です.スタイルシートを使うことで, アプリケーション全体に…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > C++ Classes > QGridLayout QGridLayoutクラスはマス目に並べるクラスです. マス目に並べる addWidget(widget, row, column) #! /usr/bin/python3 # -*- coding: utf-8 -*- i…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > C++ Classes > QBoxLayout QHBoxLayout・QVBoxLayoutはウィジェットを 横・縦に並べるクラスです.ここではQHBoxLayoutを例に説明します. 横に並べる addWidget(widget) サン…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > C++ Classes > QLabel QLabelクラスは文字または画像を表示するクラスです. QLabelの作成 サンプルコード #! /usr/bin/python3 # -*- coding: utf-8 -*- import sys from PyQ…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > C++ Classes > QPushButton QPushButtonは普通のボタンです. ボタンの作成 PyQt5.QtWidgets.QPushButton(text, parent=0) 文字がtextのボタンを作成します. サンプルコード …
PyQt5入門 PythonでGUI作成 - yu00’s blog ここではシグナルとスロットについて, 詳しい使い方を説明します. シグナルとスロットを接続する シグナルとスロットを接続(設定)するにはconnect()を使います. connect(slot) シグナルにスロットslotを接続しま…
PyQt5入門 PythonでGUI作成 - yu00’s blog レイアウトでウィジェットを配置するとき, ウィジェットは自動的に伸縮します. ここでは自動伸縮の設定について説明します. 自動伸縮するかどうか 自動伸縮をするしないを設定するには, QWidget.setSizePolicy(…
PyQt5入門 PythonでGUI作成 - yu00’s blog リファレンス:Qt 5.5 > Qt Widgets > C++ Classes > QWidget PyQt5ではウェジェットでウィンドウを作成し, その中にボタンやラベルなどの部品を配置していきます. ここではウェジェットの基本的な使い方を説明し…
PyQt5入門 PythonでGUI作成 - yu00’s blogPyQt5の多くのクラスや関数はQtをラップしただけなので, PyQt5を使ったプログラムを書く場合Qt本家のドキュメントを 参照することになると思います. ここではQt本家のドキュメントの読み方を説明します. ただ,リ…
PyQt5入門 PythonでGUI作成 - yu00’s blog イベント処理の方法 PyQt5でキーボードやマウスなどのイベントを扱う処理の説明です. ウィジェットでキーボードやマウスの入力などのイベント起こると,それぞれに対応する関数が呼ばれます. 例えばキーボード入…
PyQt5入門 PythonでGUI作成 - yu00’s blog シグナルとスロットとは シグナルとスロットの例として, ボタンを押したときに何か処理をするプログラムを考えます. そのときの流れは次のようになります. ボタンを押す ボタンが押されたというイベントが発行さ…
PyQt5入門 PythonでGUI作成 - yu00’s blog レイアウトとは レイアウトはウィジェットを簡単に配置する仕組みです. ウィジェットを横に並べたり,マス目に並べたりできます. ウィジェットの位置は自動的に計算されるので, 自分でピクセルの位置を設定する…