Unicessing
0.16T
Unicessing is an asset for writing a code like 'Processing' in Unity.
|
UGraphicsを中心とした簡単なオンラインリファレンスはこちら
Unicessingが参考にしたProcessing本体のAPIリファレンスはこちら (サポートしている関数はこの一部です)
座標系はUnityの座標系にあわせているので、Processingと違って上方向がY+です。 rect()の基準位置は左下です。
※実験的に、size(640, 480, P3D, 0.01f)などの指定を行うと、Processingの座標系に 変更できるようにしました。Unityの座標と混在すると混乱するので推奨はしませんが、 Processingのコードを移植するのは楽になるかもしれません。 width、heightはsize()で指定した値をそのまま返します。 最後の0.01fは全体にかかるスケール値です。
※camera()はないので、Unityのヒエラルキー上で見え方を調整しましょう。
線や点はline()、curve()、point()で描けます。線の色はstroke()で指定します。 strokeWeight()による線の太さの変更は現在未サポートです。
四角はrect()、丸はellipse()、箱はbox()、球はsphere()で描けます。 塗りつぶす色はfill()で指定します。noFill()だと塗りつぶしません。
stroke()でstroke色を指定してあると、rect()、ellipse()のエッジや、box()、sphere()などの ワイヤーフレーム表示ができます。noStroke()でワイヤーフレーム表示OFFです。
rect()はrectMode()やellipse()はellipseMode()で基準位置を変更できます。 デフォルトはrect()がCORNER=左下、ellipse()はCENTER=中心です。CORNER_P5で左上基準になります。
色の処理はUnityのColorをそのまま使える他、 color()で色を作り、色成分をred()、blue()、green()、alpha()で取り出せます。 lerpColor()で色を補間できます。 ただし、評価版ではblendMode(TRANS)などを未サポートのため、半透明が使えません。
noLigths()でシェーディングなし、lights()でシェーディングありです。
文字はtext()です。textAlign()で基準位置、textSize()で文字の大きさ、 textFont()でフォント変更もできます。 フォントを読み込んでおくloadFont()もあります。
座標移動はtranslate()、回転はrotate()、スケール変更はscale()です。 なお、回転についてはデフォルトがラジアン単位です。 度単位で指定したい場合はrotate(radians(90))のようにするか、 事前にrotateDegrees()を呼んでおいて度単位モードにしておき、rotate(90)のように使うとよいです。
行列をスタックに入れたり取り出したりするpushMatrix()、popMatrix()も使えます。 色などを同様に入れたり取り出したりするのはpushStyle()、popStyle()です。 両方をやってくれるのがpush()、pop()です。
マウス位置はmouseX、mouseYの他、mouse3DでVector3の値も取れます。 指定したゲームオブジェクトのforward方向を法線とした仮想平面とのあたり判定をとっています。 mousePressed、mouseReleased、mouseButtonも使えます。
キー入力はisKey()、isKeyDown()、isKeyUp()で確認できます。
任意の図形はbeginShape()~endShape()の間にvertex()で頂点指定することで描けます。 あらかじめcreateShape()して作成したUShape型のクラスに対して同様に頂点を設定して、 draw()で描くのも手です。
その他、各種数学関数も使えます。
loadPrefab()でPrefabをロード、loadScene()でシーンをロード、 lookAt()でカメラの方を見たり、 createObject()でオブジェクトを作成して非表示にしておき、draw()で表示したり、 mesh()でメッシュを描画したり、といったUnity的な便利関数も一部追加しています。
Unicessingは複数同時に動かせますが、USubGraphicsを使うとひとつのUGraphicsを 複数のGameObjectのCompornentで共有して描画に使ったりできます。 これらの使用例はUnicessingMenu.csやUnicessingRunnner.csにあります。
isVRでVRモードかどうかも判断できます。 VRモードではmouseX、mouseY、mouse3Dの値が、HMDで見ている方向の中心位置になります。
その他の関数については、Coreのコードをご覧ください。 Unicessing/Scripts/Core/UGraphics.cs and Core/*.cs
UnicessingにはProcessingにある関数と仕様が異なったり、未定義のものがあります。 また今後予告なく仕様を変更することがあります。
Copyright (C) 2016 NISHIDA Ryota / ship of EYLN