サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
ft-lab.ne.jp
1オブジェクトに複数のマテリアルを指定 1つのメッシュに対して複数のマテリアルを割り当てることができます。 GameObject1つに対して「renderer.materials」に複数のマテリアルが格納されています。 // GameObject名「xxx」のものを検索. GameObject gobj = GameObject.Find("xxx"); Debug.Log("Materials : " + gobj.renderer.materials.Length); とすると、マテリアル数を取得できます。 「gobj.renderer.materials[i]」がi番目のMaterialの参照になります。 GameObjectとしては以下のように複数マテリアルを割り当てておきます。 MaterialsのSizeを2個以上入力すると、Element0/Element1/Element2
最低限必要なSpriteは、バーの背景部分、オーバレイされる部分(上画像の緑色の箇所)、の2つ。あらかじめAtlasにこの2つを格納しておきます。 オーバレイ用のSpriteは、単色の白の矩形でとりあえずOKです。Sprite側で色変更やアルファ変更できます。 Spriteの配置 シーンツリーでUI Rootを選択した状態で、メインメニューの「NGUI」-「Create」-「Sprite」を選択します。 InspectorでProgressBarのAtlas/Spriteを選択し、シーンビューで配置やサイズを調整。 分かりやすいように名前を「ProgressBar」としました。 子のSpriteの作成 ProgressBarを選択し、シーンビューを右クリックして「NGUI」-「Create」-「Sprite」-「Child」を選択。 名称を分かりやすいように「Overlay」に変更。 ここ
形状の複製(Prefab) 同一の形状をシーンに大量に配置する場合は「Prefab」が便利です。 Prefabは、GameObjectで指定された形状をPrefubというAssetとしてプロジェクトに割り当て、再びシーンに配置する際に形状の複製として配置されます。 なお、Prefabはあくまで参照であるため、元になる形状を削除すると中身も消えてしまいます。 手順 GameObjectを配置 シーンにGameObjectとして形状を配置。 ここでは、テスト的にメインメニューの「GameObject」-「Create Other」-「Cube」を選択して立方体を配置します。 プロジェクトにPrefabを配置 ProjectウィンドウのAssetsのツリー部を右クリックし、ポップアップメニューより「create」-「Prefab」を選択。 Assetとして「New Prefab」というものが配置
Unity関連の情報格納庫 Unity関連の情報を蓄えているページです。 トップページは「http://ft-lab.ne.jp」となります。 [2014/04/10] facebook https://www.facebook.com/yutaka.yoshisaka メモ書き Unityのシーンビュー上の描画は「Handles」を使用する(Handles.DrawBezierなど)。 更新履歴 2020/5/9 unity_script_create_polygonmesh 2020/5/8 unity_animation Menu 2020/5/5 unity_cs_string 2019/3/10 unity_script_create_material 2019/2/3 unity_projector_shadow 影だけを受ける地面の配置 2019/1/28 Time.time
ファイル入出力 ファイル入出力は、C#の標準的な機能で実装できる。 要 : using System.IO; ファイル書き出し FileStream f = new FileStream("test.txt", FileMode.Create, FileAccess.Write); BinaryWriter writer = new BinaryWriter(f); writer.Write(100); writer.Write(0.5); writer.Write("test"); writer.Close(); Unityの対象プロジェクトの直下に「test.txt」を出力。 この場合は順番に、int型/double型/文字列型のデータを出力します。 BinaryWriterを使用すると、テキストだけを出力してもバイナリ形式のファイルになります。 Unityのプロジェクトでは「Asse
はじめに Unityは、Windows/Mac/android/iOSで共通で使用できるフレームワークです。 共通のコードで、マルチプラットフォームの開発を行うことができます。 大きく、無料版(Basic)と有料版(Pro)が使用可能。 また、画像/3Dデータ/サウンドなどのリソースとは別にスクリプトをMonoで記述できます。 記載可能言語は、JavaScript(Unityにカスタマイズされたもの)/C#など選択可能です。 将来的に凝ったことをしたい場合は、C#がよさそうです。 Basic版とPro版の違い Pro版は以下の機能を利用できます。 平行光源での影(シャドウマップ)。これはUnity 4.xではBasic版でも使用できるようになりました。 C/C++/ObjectiveCプラグインを作成/使用できる フルスクリーンのポストエフェクト(DOFやぼかしなど) プロファイラ(コード
[NGUI] 画像をまとめるAtlasとは? GUI部品のプッシュボタンやスライダの描画は、あらかじめ用意した画像を反映させることで行われます。 これらは1つのテクスチャにまとめて「Atlas」という名で呼ばれます。 このAtlas内に存在する複数の部品はSpriteと呼ばれます。 Atlasに変換するツールはNGUIに用意されています。 このAtlasの作り方と使い方を説明します。 Atlasの作成 素材の作成 まずはプッシュボタンとプログレスバー、背景で使う画像を作成しました。 透明/半透明にする部分はアルファを指定します。pngファイルなどで保存。 サイズは左から、32x32/32x32/13x31/32x32/256x256とまちまちです。 Unityに画像をインポート Unityで適当なフォルダを作って、素材画像をインポート。 このときのファイル名がそのままSpriteの名前にな
[NGUI] 背景の指定(sprite) GUIとしての背景は、spriteを配置してそこにatlasからの画像を指定することで実装します。 シーンに配置した「UI Root」を選択した状態で、メインメニューの「NGUI」-「Create」-「Sprite」を選択。 これで、UI Rootの子として「Sprite」が配置されます。 Inspectorで背景として使用する画像が入っているAtlasとSpriteを選択。 シーンビュー上でリサイズして配置を調整します。 また、WidgetのDepthで奥に配置されるように数値を調整します(数値が小さいほど奥)。 「Sprite Type」で「Simple」を選択すると、テクスチャが全体的に引き伸ばされた状態になります。オリジナルのサイズでタイリングする場合は「Tiled」を選択します。 SimpleとTiledは以下のような違いがあります。 ス
> Photon Cloud/Photon Serverの違い [Photon Cloud] Photon Cloudとは 「Photon Cloud」は、ExitGamesが開発したネットワークのマルチプレイヤー、マッチメイキングなどを手軽に実装できるエンジンです。 Unity Asset Storeから必要なAssetを購入できます。 無料版では、同時に20CCUまでアクセスできます。 接続の自動化 マルチプレイでゲームをする場合、 実装上ではどこかにサーバーを立ててそこのどのURLにアクセスして、、、とかの情報の指定が必要なのですが、Photon Cloudではこの部分を自動化してつないでくれます。 ユーザーから見ると、 XXXXというゲームを開始 ゲーム内のある条件に合うグループに参加 のような手順だけでOKです。簡単ですね。 開発者がPhoton Cloudを使う場合は、ほぼこれ
[NGUI] 相対的な位置とサイズ(anchor & stretch) スクリーンの幅と高さを0.0-1.0としたときの位置を指定するのが「Anchor」、サイズを指定するのが「Stretch」になります。 PCとスマホとタブレットで解像度が異なる場合に、同一の見え方をさせたい場合に利用できます。 以下のように画面下に4つのSpriteを配置し、画面の伸縮で位置が固定になるようにします。 ここでは、Sprite1/Sprite2/Sprite3/Sprite4と命名。 なお、それぞれのSpriteのInspectorウィンドウ内のAnchorsでTypeはNoneにしてます。 Anchor Sprite1/Sprite2/Sprite3/Sprite4を選択し、Inspectorウィンドウの一番下のAdd Componentより「NGUI」-「UI」「Anchor」を選択。 これで各Spr
[NGUI] テキストの表示(Label) テキストの表示はLabelで行います。 フォントの指定、配置位置の変更、効果として影付け/縁取りなどが指定できます。 配置 メインメニューより、「NGUI」-「Create」-「Label」よりラベルを配置します。 フォントの指定 ラベルのInspectorウィンドウで、UILabelの一番上の項目で「Dynamic」を選択。 左上の「Font」をクリックして表示されるウィンドウ内で、Arialのある行の右端の「Select」を選択。これで、日本語も表示可能になります。 テキストエリアにテキストを入れるとそれが反映されます。 日本語などの全角を指定する場合は入力できないため(入力できる場合もありましたが、法則は分からず)、他のテキストエディタからコピー&ペーストするのがよいかと思います。 「Font Size」でフォントのサイズ指定が可能。 その
Texture2Dをpngとしてファイル保存 「Texture2Dをpngに変換」の処理の後、そのままファイルに保存します。 pngに変換するにはTexture2DのTextureFormatが RGBA32/ARGB32/RGB24、である必要があります。 ファイル保存時に、ファイルダイアログを出すようにします。 また、ファイルダイアログを出す機能はiOS/androidでは動作せず、PCのみの機能になります。 要 : using UnityEditor; using System.IO; Texture2D tex = なにかテクスチャ. byte [] pngData = tex.EncodeToPNG(); // pngのバイト情報を取得. // ファイルダイアログの表示. string filePath = EditorUtility.SaveFilePanel("Save Te
[NGUI] NGUIでボタンを配置 NGUIを使ってボタンを配置、イベント処理を行うまでを説明します。 なお、NGUI 3.0.9で解説。 NGUIのAssetをインポート Asset Storeから、NGUIを購入してプロジェクトにインポートします。 メインメニューに「NGUI」が出ているのを確認。 2D UIのRootを配置 新規シーンにて、メインメニューの「NGUI」-「Create」-「2D UI」を選択。 これでシーンに「UI Root」というのが配置されます。この中にはGUI用のCameraが配置されています。このUI Rootの子として各種ウィジットを配置していきます。 ビューを2D表示にする シーンビューは3Dのパースペクティブ表示になっているため、GUIを確認しやすいように2Dにします。 シーンビューの上の「2D」を選択して、ビューで見やすいようにズーム。 あらかじめ用
ポリゴンメッシュの作成 スクリプトでポリゴンメッシュを作成するには、Meshクラスを使用します。 まずemptyなカラのGameObjectを作成しておき、ここに「Mesh Filter」と「Mesh Renderer」をコンポーネントとして登録しておきます。 スクリプト「CreatePolygonMesh.cs」というのを新規で作り、コンポーネントとして指定のGameObjectに追加しておきます。 GameObjectのコンポーネントとしては、 Mesh Filter Mesh Renderer CreatePolygonMesh (script) の3つが追加されている状態になります。 Mesh Filterは、ポリゴンメッシュのジオメトリを受け取るものです。中身についてはスクリプトで記載します。 Mesh Rendererは、レンダリングを一手に引き受けるものです。マテリアルもここ
OpenSSLを使用して、SSLを使った通信を行う覚書です。「RenderMail」プラグインで利用している部分の補足になります。 OpenSSLのソースの取得 http://www.openssl.org/ のSourceから「openssl-1.0.1e.tar.gz」を取得。これを解凍すると、「openssl-1.0.1e」というディレクトリ内にソースやINSTALLファイルなどが展開されます。 ここでは、C/C++言語向けのstaticライブラリを生成するものとします。 Windowsでのビルド 参考サイトは以下。 http://developer.covenanteyes.com/building-openssl-for-visual-studio/ Visual Studio 2010のインストール ActivePerlのインストール が必要です。 32bit/64bit版のラ
swfから外部のテキストファイルを読み込みます。データなどを分離してテキストで扱い、それをその都度読み込むのに使えます(ゲームで言えばマップデータとかキャラクタの配置位置とか)。 import flash.events.*; import flash.net.*; の記述がasファイルの先頭のほうで必要となります。 セキュリティの設定について(いずれは別ページに記載する予定) 外部ファイルを扱う場合はセキュリティの設定が必須になります。 Flash Player セキュリティについての記述 http://livedocs.adobe.com/flex/3_jp/html/help.html?content=05B_Security_01.html ローカル環境にて外部ファイル読み込みを有効にする場合について記載します。 Windowsの場合 C:\windows\system32\Macr
CとObjectiveCを混合して使えるようにするため、拡張子を「mm」とします。 C言語のようにヘッダファイルは拡張子「h」のものを作成します。 コメントの表記 C言語と同じく1行コメントの場合は // 何かコメント か、複数行の場合は /* 複数行コメント */ のように記述します。 簡単な足し算を行うクラス foo.mm / foo.hという実装部とヘッダ部のファイルを作成するものとします。ObjectiveCのクラスひな形の覚え書きです。 「foo.h」の記述 ヘッダ部の宣言です。「foo.h」というファイルを作成するとします。 #import <Cocoa/Cocoa.h> @interface Foo : NSObject { @private float m_a, m_b; } /** * 初期化処理 */ - (id)init; /** * 破棄処理 */ - (void)
ゲームなどのようにリサイズされない画像を使用する場合には、ダイレクトに画像にアクセスしたほうがBitmapよりも高速に処理できます。 Flexでは「BitmapData」というものを扱うことで、高速な画像アクセスが可能になります。 256 x 256ピクセルの描画領域を作成する例 package { import flash.display.*; import flash.text.*; import flash.utils.*; import flash.geom.*; public class BitmapDataTest extends Sprite { private var m_bmp:Bitmap; private var m_bmpD:BitmapData; public function BitmapDataTest() { var stTim:int, endTim:in
mp3の音データの再生(BGM/SEどっちでも)を行うことができます。また、複数の音を同時に鳴らすことも可能です。 flex2からflex3に移行するにあたって、この仕様が変わったみたいですのでここではflex3のルールにて記載しています。 指定のURLのmp3を鳴らす セキュリティの制限上、ネットワークを介した場合は許可が与えられていない再生はできないようです(後で情報追加)。 ローカルだと問題ないですので、そのときのサウンド再生方法について記載します。 なお、 import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundTransform; import flash.net.URLRequest; の指定をソースのはじめのほうでしておく
プログラムや3DCGに関する情報、などを記載しています。 古いトップページ(-2014/07) : http://www.ft-lab.ne.jp/old/old_index.html 別サイト(メンテ予定) : https://ft-lab.jp/ 3DCGブログ 自作プラグインやアセット、趣味や個人制作の情報をブログ形式で書いています。 ft-lab 3DCGブログ NVIDIA Omniverse NVIDIA Omnivese ( https://www.nvidia.com/ja-jp/omniverse/ )に関する情報です。 NVIDIA Omnivese関連の情報 Shade3D Shade3D ( https://shade3d.jp/ )の自作プラグインやスクリプトなど、Shade3Dに関する情報です。 Shade3D関連の情報 Unity Unity ( https:
PHPでの文字列処理 文字列の連結 $str = "Hello"; $str2 = "World!!"; $str3 = $str.$str2; 文字列を連結する場合は「.」を使うことでつなげることができます。$str3は「HelloWorld!!」となります。 $str3 = "$str$str2"; でも連結できます。ただし、文字列内に変数を内包する場合はダブルクォーテーションでくくる必要があります。ダブルクォーテーション内には配列を指定することはできません。配列を文字列連結する場合は「.」を使用します。 $ar = array('Apple', 'Orange', 'Grape'); $str = "果物:".$ar[0]; 文字列を数値に変換(intval) $str = 1234; $a = intval($str) + 10; 結果は、$aが1244になります。 数値を文字列に
「KeyTest.as」というファイルを以下のように記述するとします。これは、矢印キーによりティーポットを移動させる例です。 import flash.events.*; import flash.ui.*; を先頭にて記載しておく必要があります。 package { import flash.display.*; import flash.text.*; import flash.utils.*; import flash.events.*; import flash.ui.*; // Keyboard.LEFTなど public class KeyTest extends Sprite { private var m_Text:TextField; private var m_child:Sprite; ///< ビットマップを貼り付けるスプライト private var m_posX
文字列の管理(NSString) Cocoa上での文字列の管理は「NSString」クラスにて行うことができます。 文字列クラス(NSString)の生成 カラの文字列を生成します。 NSString *pStr = [[NSString alloc] init]; 文字列クラスの破棄 生成した文字列を解放します。 [pStr release]; 使用後は必ず解放するようにしてください。 以降、pStrは「NSString *」型とします。 文字列を代入 pStr = @"文字列です"; 決まった文字列を入れる場合は、「@"〜"」の中に文字列を入れるようにします。 文字列の長さを取得 int len = [pStr length]; 「length」関数にて文字列の長さを求めます。全角は1文字にカウントされますので(バイト数ではないです)注意してください。 文字列を連結する NSStrin
XOOPS? 有用な追加モジュール 英語・日本語の切り替え モジュールを造る 簡単なモジュールを作成 ログインユーザ情報の取得 データベースにアクセスするモジュールの作成 外部データベースへのアクセス セッション管理 ハマるとなかなか気づかないワナ サンプルモジュール「SimpleMessageBoard」(2005/11/15) 以前仮置きしていたのを、いろいろ変更を加えました(Ver 1.10)。 ダウンロード:xoops_SimpleMessageBoard_110.zip 以下のようなミニ掲示板を実現するモジュール「SimpleMessageBoard」です。XOOPSのmodulesディレクトリに「SimpleMessageBoard」を放り込んで、システム管理の「モジュール管理」でインストールします。 複数のPHPソースの連携、フォームでの入力処理、データベースの格納、など基本
MySQLをソースのビルドから行います。RPMでもいいのですが、どうもUTF-8対応が怪しかったためコンパイラオプションを指定してMySQLの実行ファイル群を作成する方法を説明します。必ずroot権限でインストール作業を行うようにしてください。「http://www.mysql.com/」よりソースのtar.gz形式をダウンロードします。 2005/12現在だとちょっと古いバージョンですが、「mysql-4.1.10a.tar.gz」をインストールしたときの手順を書きます。なお、インストールする際には過去のMySQLのサービスが停止されていること、関連するRPMなどがアンインストールされていることを確認します。 rpm -qa | grep MySQL のようにすると、RedHat9でのRPM形式でインストールされたMySQL関連のものがインストールされている場合は列挙できます。 MySQ
モノラルのwavデータなどを読み込んだ場合、これをステレオ化したい場合の手順です。ステレオ化しないと、エフェクトをかけたときに効果があまり期待できない場合もありますので、それの前処理のためでもあります。 トップメニューの[プロジェクトファイル] - [オーディオの取り込み]にて、まずはwavやmp3などの音データを読み込みます。
PHPにてフォームからのデータを渡す HTMLのformでのテキストフィールド・チェックボックス・セレクト・ラジオボタン・テキストエリアなどで入力された情報をPHPサイドで取得します。 ここでは「formtest.php」というPHPファイルを例として説明します。 <html> <head> <meta http-equiv=Content-Type content="text/html; charset=SHIFT_JIS"> </head> <form action="formtest.php" method="POST"> <input type="hidden" name="f_hVal" value="hoe" /> メッセージ:<input type="text" name="f_tVal" size=40 maxlength=40 /><br> <input type="su
スカイライト(2004/10/31) 10/31でのDOFですが、「焦点は面で考えたほうがいいよん」というツッコミをいただきまして、RRT本を参考にしてまた練って見ることにします。品質が向上するらしいっす。 話変わってフォトンマップベースのスカイライト対応、ようやくできました。ノイズが低周波であるのと計算時間がパストレよりは軽いというのが利点なのですが、ほぼパストレとのハイブリッド仕様になってます。 スカイライト(白色)のみのシーン HDRI(IBL)のほうは、特に指向性の光源をおいていないのですがうっすらと影ができています(この影は直接照明(IBL)によるもの)。アルゴリズムについてはオリジナルですが、時が経ったら公開予定です。(大したことはない力業ですが) ただ、HDRIのレンジが大きすぎて全体的に色が飛んでしまうため、丸めている部分があるのですが、たぶん勘違いしてるんだろうなぁ。 D
次のページ
このページを最初にブックマークしてみませんか?
『Future's Laboratory (ft-lab)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く