月別アーカイブ: 2014年11月

アバターを調整

平面のポリゴンのアバターは違和感があるので立体のモデルに変更。

3DCG制作ソフトを使わずVRML手書きのためカクカクしてますが、世界との違和感は多少改善されたものと期待しています。

アバターは世界に対して存在感を弱めに作りました。

できればアバターよりも世界について注意をひかせたいためです。

一応フェイス画像が登録されていればポリゴンの頭部前面に仮面のような形で画像を表示するようにしています。

樹木のオブジェクトサンプル

以下、「夜の避暑地」の空間で使用している樹木のオブジェクトのVRMLソースです。

平面四角のIndexedFaceSetに透過の樹木画像を貼り付けたものをY軸方向に垂直にふたつ重ね合わせています。

これによっていろいろな角度から見てもちゃんと樹木に見えます。

もしくはBillboardノードで面を視点側に固定させる方法もありますが、この場合実在感を損なう場合もあるので注意が必要です。

樹木のオブジェクトを使用する際は参考にしてください。

 

#VRML V2.0 utf8

Transform {
children [
Shape {
appearance Appearance {
texture ImageTexture {
url “http://www.polygonwalk.com/images/bessou_tree.png”
}
material Material {
diffuseColor 1 1 1
specularColor 0 0 0
shininess 0
transparency 0
emissiveColor 0 0 0
}
}
geometry DEF Pelvis_geometry IndexedFaceSet {
coord Coordinate {
point [ -0.5  0   0,
-0.5  1 0,
0.5  1 0,
0.5  0   0
]
}
coordIndex [
0 1 2 3 -1
]
solid FALSE
}
}
]
translation 0 0 0
rotation 0 1 0 0
}
Transform {
children [
Shape {
appearance Appearance {
texture ImageTexture {
url “http://www.polygonwalk.com/images/bessou_tree.png”
}
material Material {
diffuseColor 1 1 1
specularColor 0 0 0
shininess 0
transparency 0
emissiveColor 0 0 0
}
}
geometry DEF Pelvis_geometry IndexedFaceSet {
coord Coordinate {
point [ -0.5  0   0,
-0.5  1 0,
0.5  1 0,
0.5  0   0
]
}
coordIndex [
0 1 2 3 -1
]
solid FALSE
}
}
]
translation 0 0 0
rotation 0 1 0 0.785
}

空間、光、音

本日避暑地の別荘の空間を追加しました。

http://www.polygonwalk.com/world.php?pid=36

aaa

別荘周りの簡単なフィールド、虫の声を入れていますがこれだけで
だいぶ雰囲気がでます。

この空間を構成してみて思ったのは、空間のリアリティに重要な要素となってくるのは、

「空間、光、音」

この3つではないかと思います。

別荘の空間は夜の設定になりますが、この3つが合わさることで現実感がぐっと増します。

ゲームではここまで視認性の悪い空間はなかなか作らないものと思いますが、
仮想空間ではこういったものもありかと思います。

個人的には現実にはいけない場所でしばらくの間たたずみ、しばし日常を離れて
何らかの思いに耽るような使い方をして頂けると本望です。

この空間ではフィールドに高低差を出し別荘内から見える木々の風景にこだわりました。

きっと素敵な時間を過ごして頂けるものと思っています。

javascriptループ処理の改善

「ポリゴンウォーク」のアバター位置情報更新処理、イベント発生監視処理などは
javascriptのsetIntervalでループ処理を施しています。

もともとは更新関連の処理をひとつのsetIntervalで動かしていたのですが、
アバターの位置情報の更新や描画をもう少し早めに動かしたかったため、
setIntervalを複数とし、ループ秒数を調整しました。

おそらく若干動きはよくなったかと思われます。

まだ2アバター表示でしかテストできていないため、これより多くのアバターが
表示された場合にどのくらい動くものかわかりませんが、この辺のパフォーマンス
チューニングも課題のひとつです。

シンクロオブジェクトの必要性

現状、「ポリゴンウォーク」の空間は、アバターの位置情報以外はユーザー間で
連携はしていません。

空間内のオブジェクトの動きはあくまでクライアント側(ユーザーのブラウザ)だけで
独立したものです。

例えば、ユーザーAが空間内の家の照明をつけるとします。
しかしユーザーBの空間では照明はつきません。

これを実現するにはクラアント側が変更したオブジェクトの変化の情報を一度データベース側で
保持し、その後に全ユーザーのブラウザに情報を配信する必要があります。

3D空間内での体験の共有という意味ではこれは非常に重要な機能になると思います。

先ほどの照明の例でもそうですが、例えば、空間内で船を操縦するユーザーAがいるとします。
ユーザーAが操縦する船は全ユーザーのVRMLブラウザ内の港に同時に到着します。

そして船に乗って出発すると船の動きに連動してすべてのユーザーの位置情報が変化します。
これにより全ユーザーが同じ船から同じ景色を眺めることが可能になるのです。

オンラインゲームでは普通にやっていることですよね。
この同じ体験をするというのはとても楽しいものだと思います。

「ポリゴンウォーク」で言えば、例えばシンクロオブジェクトなるものを登録できる仕組みを作る。

基本的に他サーバーから参照したVRMLファイル内のノードにはJavascriptでアクセスができないため、
シンクロオブジェクトは別途「ポリゴンウォーク」側で登録してもらいます。

シンクロオブジェクトには「ポリゴンウォーク」側でユニークなID(DEFノード)を設定し、
マップ読み込み時にそのIDを付加したオブジェクトをjavascriptでVRMLブラウザに設置します。

これであればWEBブラウザはJavascriptを介しVRMLブラウザ内のオブジェクトとデータの受け渡しが
できるため、あるユーザーのVRMLブラウザから抽出したオブジェクトのパラメータを随時データベースに
登録して一定間隔で全ユーザーのVRMLブラウザに同期をとることが可能です。
※トリガーとなるユーザーをどう決めるかの問題はありますが。

しかし、このような実装方法の場合、オブジェクトの動きはひどいことになりそうです。

現状のアバターの動きでさえかなりタイムラグがあります。
Javascriptの定期処理で設定した間隔で同期をとって全ユーザーのVRMLブラウザに位置情報を伝えて
いるため限界がありますね。

おそらくこのシンクロオブジェクトの動きはとびとびになると思います。
※インタポレーターで動きを補間させるのもひとつの方法でしょうか。

となると、そもそもの通信方法から見直す必要があるのかもしれません。
※この辺の技術は勉強不足で想像もつきませんが…。

しかしゆくゆくイメージしている仮想空間に近づけるためにはこういった部分を勉強してゆく必要も
ありそうです。

マインクラフト的な仕組みもよいかも

「ポリゴンウォーク」では3D制作ソフトを操作できる方は制作したオブジェクトを
VRMLファイルにエクスポートすることで比較的簡単に空間を公開することができますが、

やはり一般の方には敷居が高いと思われます。
そしてこれは3D仮想空間では漏れなく言えることかと思います。

できれば一般的な3D制作ソフトを操作できない方にも3D空間を制作する楽しさを
体験してほしいものですが、現状のサーバー環境ではなかなかユーザーが制作した
3D空間やテクスチャを保存しておくだけの余裕はありません。

なので現在はユーザーが自身のレンタルサーバーで公開しているファイルを参照する
形にしています。

実装だけを考えれば、「ポリゴンウォーク」で用意している3D空間制作ツールを
改修して制作したものをファイルもしくはデータベースに入れてそのまま公開する
ことも可能ではありますが、今後のサーバー負荷が読めない、またなんらかの要因で
サーバー上のデータに問題が発生した場合のリスク等を考えるとここはなかなか
難しいものがあります。

そこでひとつの方法としては、公開した空間に対し予め用意した3Dオブジェクトを
好きに設置してゆける仕組みなんかも面白いかもしれないなと思いました。

イメージとしてはマインクラフト的な感じですね。

例えばクリエイターがベースとなるマップ(地形)を用意する。
そこにユーザーが木やら家やらを配置してひとつの空間ができあがってゆくという形です。

こうなると空間の中の世界観の統一性はそこなわれる恐れはありますが、大規模な空間が
短期間で構築されてゆく期待もあると思いました。

「ポリゴンウォーク」ならではの魅力を作ってゆく上では、ひとつの方向性として検討
してもよいのかなと考えています。

ワールド画面にコメント履歴を追加

3D画面内のコメントだけだと視認性が悪いため、3D画面下にコメントエリアを追加。

最初は空間の広がりを感じるために実際に近くにいる人のコメントしか見れない仕様としていましたが、
これだと会話が非常にしづらいため改善しました。

コメントは非ログイン画面でも見れるようにしました。

チャットが面倒な方はスカイプ等で音声チャットしながら空間内を一緒に歩いてみるといった
利用方法も面白いかもしれません。

オンラインゲームなんかではスカイプと併用してプレイする方なんかもいらっしゃいますもんね。

「ポリゴンウォーク」ではスカイプIDを会員情報編集画面に入力するとアバターにスカイプアイコンが
表示され、クリックでコールできるようにしています。

3D仮想空間でのコミュニケーションをお楽しみください。