東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

CG^3

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

【CG^3】 OpenGLで3Dゲーム作成 2

こんにちは、CG^3の抹茶(@_xcipher)です.

環境とか、使用ライブラリとか色々変えました

* 環境とか
    VC++ 2012CTP -> VC++ 2013CTP (C++11おいしい!)
    
* 使用しているライブラリとか
    FTGL (日本語フォント描画) -> freetype2
    [new!] OpenAL (サウンド周り)
    [new!] boost::asio (通信)
    [new!] LZ4 (圧縮)
    
* やりたいこと
    自動作曲
    自動ワールド生成
    マルチプレイ(オンライン)
    アップデーター\
    
* シェーダーのおはなし
    ** 描画パイプライン
        1. 3D上の頂点情報をGPUへ送る
        2. 頂点シェーダ―が頂点単位で何か処理する(座標変換など)
        3. [ジオメトリシェーダ―(頂点増減)]
        4. 隠面処理とか
        5. ラスタライズ (頂点によって張られた面をピクセルに)
        6. ピクセルシェーダーがピクセル単位で何か処理する(ライティングなど)
        7. 画面に出力
    
    OpenGL3.x以降やDirectX10以降では、シェーダーをプログラミングしないといけません。
    つらい。
    楽しい!
    
    ** 具体的に何書くの
        例えば、ライティング
        ライトの座標指定しても勝手に描画してくれません。(現実は厳しい)
        ライトの座標からこれだけ離れているから、このピクセルはこれぐらい明るくする、みたいなのを書いて、あたかもライトがそこにあるっぽいような描画をさせます。
        行列とベクトルが大活躍します。
        つらい。
        楽しい!

* 自動作曲のおはなし
    音楽経験なし!音楽知識なし! -> プログラムに作らせよう
    パクろうと思ってるのがコレです -> Wolfram Tones
    単純セルオートマトンの一部を帯状に切り取って、それを楽譜に見立てています。
    おもしろい。
    
    ** PCで音を鳴らすには?
        自分はOpenALを使う予定ですが、他にもXAudioとかあります。
        音の波形の離散的なデータを渡すと音を出してくれます。
        楽器の波形渡してあげれば、そんな感じの音が出ます(多分)
        まだ勉強中です(´・ω・`)
        
* 進捗
やりたいこと増やしてたら何も進んでなかった。


いろいろやってると工大祭間に合わないのでは
いじょうです( •̀_•́)ง

【CG^3】 OpenGLで3Dゲーム作成

こんにちは、CG^3の抹茶(@_xcipher)です.

現在、minecraftっぽい3Dゲームを作ろうとしていて、そのゲームエンジン部分を作成中です.

4月までDirectX11ベースでゲームのエンジン部分を作ってたのですが、ちょっと行き詰まったのでOpenGLに乗り換えてみました.

* 環境とか
  • Visual C++ 2012 (Nov 2012 CTP)
  • OpenGL 4.0
  • GLSL 4.0

* 使用しているライブラリとか
  • glfw3 (GLUT的ポジション)
  • glew (GLSLまわり)
  • GLM (数学関係)
  • FTGL (日本語フォント描画)(予定)
  • LodePNG (PNG画像読み込み)
  • Google V8 JavaScript Engine (スクリプティング)

Windowsでも特に苦労なくビルドできます.


* V8エンジンとは

C++で書かれたJavaScriptエンジン.

Googleが作ってるのできっと強い.

C++側に埋め込んで、JSでスクリプティングができる. わー.

主にC++の変数、関数、クラスなどとJacaScriptのオブジェクトの仲介部分を書いていく感じになります.

公式のサンプルを読めば何となく分かるので、それっぽく書くと何か動きます.

汎用性のあるラッパーを作るのが難しい.

用途としては、ゲーム内の敵の動きを記述しようと思ってましたが、意外といろいろできそうでした.
(json形式で書かれた設定の読み込みとか)

ある程度ラップしたもの
[C++側]
cpp

[js]
js

[出力]
res
(logはcompileのときに中で埋め込んでます. 標準出力してるだけです)


* 3Dモデル読み込み
基本的に、標準でサポートされていません.
自分で解析して読み込みましょう. (白目)

C++で文字解析はつらいです
[解析手段]
  1. 頑張る → つらい
  2. boost::spirit::qi → ✌('ω')。o(???????????????)
  3. C++が読みやすいような中間データを作成する → 悪くはないかもしれない
  4. ライブラリを使う → 最適解
  5. 上記のJSスクリプティングで読み込む → 新規性を感じる
JSだと楽にかけて意外と良いのでは~

そんなわけで5でやってみました.
できました.
matcha01

メタセコイアっていうソフトで作られたmqo形式のモデルです.
(まだ完全ではないです.)
こっそりライティングをしていますが、この話はまた次回辺りで...

ちなみに、Debugビルドだと、解析にめっちゃ時間かかります.
Releaseならなんとか実用的かもしれないです

* その他

Q. Unity使わないの?

ゲームエンジンも作りたいので...
逆に、すぐに動くゲームを作りたいのならUnity一択な時代ですね.

Q. Luaは?
使ったことないです


Q. OpenGL と DirectX の違い

 どっちもでもいいと思います.

 ただ、ライブラリ面ではOpenGLの方が充実していて楽に書けると思います.

DXライブラリはDirectX9までなので、DirectX10以降を使う場合は直打ち不可避です.


Q. OpenGL4.0, DirectX11 とは

 どちらも最先端の機能を使うことができます.(PCの性能にも依りますが)
比較的新しいので、ネット上の情報は少なく、書籍を参考にしたり、英語の公式ドキュメントやサンプルを読む力が必要です.
OpenGL2.0やDirectX9でも十分なクオリティのゲームを作れますし、動作する環境も多いので、わざわざ新しいものを使う必要は無いのかもしれません.
でも一番新しいもの使ってみたいですよね?

* 今後の予定
  • ライティング、影の描画など
  • シェーダーでいろいろ特殊効果を実装してみる
  • Defferd Shadingしてみる
  • OpenALで音を鳴らしてみる
  • OpenGLのいろんな機能を試す(テッセレーションとか)
  • ゲーム本体を作る

工大祭までにそれなりのものを作りたいですね...
それでは(。・ω・)ノ゙


ソースです. 汚いです. 読めないです. いじめないであげてください.
github



【CG^3】PhotonCloudでオンライン対戦の実装

こんにちは。CG^3のLinea(@Linea319)です。
今回もUnityで製作中の「ARMED CORE」の進捗報告です。
2014y04m02d_232405070
プレイはこちらから(別ウインドウ注意)
操作方法
WASD:移動 マウス:視点操作  Space:ジャンプ 左Shift:ブースト Q,E:クイックブースト  
F:オーバーブースト 左右クリック:武器使用 1,2:武器切り替え F1,F2:武器パージ

タイトル通りオンライン対戦機能を実装しました。
という訳なので、今回はUnityのオンライン関係についてお話したいと思います。

Unityには標準でオンライン通信の機能が使えます。※参照
ただ、標準の機能では自前でサーバーを建てないといけないので使うのが面倒です。
そこで、楽にネットワークの接続をする方法がPhotonCloudです。 
2014y04m02d_234516190
特徴としては
1.PhotonCloudのサーバーを使用するのでサーバーの管理が不要
2.Unity標準の通信機能に似たクラスで使用できる
3.無料でも同時接続数20人までなら使える

1.に関してですがオンラインでの相手との接続は
PhotonCloudのサーバーを通して行われるので、
クライアントの通信機能の実装さえすれば後はPhotonCloud任せにできちゃいます。
2.に関してはUnity標準の通信機能のクラスで書かれたものを自動変換もしてくれるみたいです。
また、接続関係は関数一つで出来てしまうのでむしろ使いやすくなってると感じました。
3.に関しては更に月間ユーザー数や一秒間の通信メッセージ数にも制限はありますが、
個人製作のゲーム程度ならとりあえず無料でも大丈夫かと思います。 

細かい使い方は公式リファレンスドキュメント を参照してみてください。

ところで前回実装すると言っていた敵ですが...
ちゃんと実装しておきました。ええしましたとも。
次回は未だついていない効果音を実装しておきたいと思います。
それでは。 

【CG^3】こんなゲーム作ってみました

はじめまして。CG^3の綿80%バフ(@HTMeteoG)です。よく旧ニックネームであるHTGで呼ばれています。
今回は4月8日,9日に行う新歓展示で私が展示する予定のゲームの紹介をします。
このゲームはUnityというソフトを使って製作しましたが、初めてだったこともあってシンプルな作品に仕上がっています。
 TH1
ゲーム名は「The Hurdle」。その名の通りハードルをひたすら飛び越えるゲームです。

TH2

ジャンプに失敗してハードルに当たってしまうと即ダウン。
しばらく動けなくなるのでタイムロスになります。
TH4
/痛ぇ\
 
TH2
結果画面はこんな感じです。
ちなみにスコア計算の内容についてですが、
・最大コンボ数:ハードルにぶつからずに連続で飛び越えた数の最大数
・総活動時間:プレイ時間 - ハードルにぶつかって倒れていた時間の合計
・平均飛び越え速度:飛び越えた数 ÷ 総活動時間(分)
 となっています。 

このゲームは私のブログでダウンロードすることができます。
実際に遊んでみたい!という方は下のリンクからどうぞ。
http://htmeteog.blog.fc2.com/blog-entry-2.html(別ウインドウが開きます) 

【CG^3】カスタマイズ機能をつくる

こんにちは。CG^3のLinea(@Linea319)です。
今回はUnityで製作中の「ARMED CORE」の進捗報告です。
前回の記事で予告していたカスタマイズ機能を実装しました。

カスタマイズ画面はこんな感じです。
UIはまだ仮なのであまり凝ってはないですがひと通りの機能は付いたと思います。
2014y02m26d_103817149
プレイはこちらから(別ウインドウ注意)

カスタマイズ機能を作る上で問題なのが全てのパーツでアニメーションを同期する方法です。
2014y02m26d_105627922
上の画像のようにパーツは頭、胴、両腕、脚部と4つのパーツに分かれています。
このパーツ各部がボーンを持っているのですが、どのパーツも体全体のボーンを持っています。
例えば頭のパーツだろうが足や腕に相当するボーンを持ってるわけです。
つまり4体分のボーンが入ってるわけです。
利点はどのパーツも同じボーンを使うので設定やアニメーション管理が楽ということです。
欠点は無駄な部分のボーンの分処理が重くなるということです。
といってもぶっちゃけまだそれほど重くないので気にしなくてもいいのかもしれません。

2014y02m26d_114934168
Unity4.2あたりから実装された「Optimize Game Object」という設定をONにすると、モデルのボーンを最適化して軽くなるので使っています。
ただ、この機能を使うとエディタからボーンへアクセスできなくなるのでゲーム中使うボーンは下のリストに入れておく必要があります。

次は敵を実装したいと思います。それでは。






 
ギャラリー
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
  • NHK学生ロボコンチームMaquinistaの紹介(2017)
  • NHK学生ロボコンチームMaquinistaの紹介(2017)
  • 関東春ロボコン 準優勝!!
  • 関東春ロボコン 準優勝!!
  • 関東春ロボコン 準優勝!!
  • 関東春ロボコン 準優勝!!
記事検索
最新コメント