「VRMNX」カテゴリーアーカイブ

NX キハ58のドア

現在、キハ58のドア組み込み作業中です。

運転台の乗務員乗降ドア、乗客用の乗降ドアが開閉します。写真は、2エンジン車のキハ58後期型です。

システムは、あと1回、キハ58向けのアップデートを行います。リリースは、あと数日です。ご期待下さい!

VRM-NX キハ28組み立て開始

キハ58系の組み立てを開始しました。キハ58系は、多様な車両が存在する一大グループです。

キハ58系の第一弾は、国鉄キハ28-3023と国鉄キハ58-1137です。国鉄のディーゼル急行を支えた主役車両から、パノラミックウィンドウを採用した後期型冷房車のキハ28とキハ58です。

組み立てはキハ28から開始しています。

窓ガラスは、新しいガラスシェーダーを適用しています。ガラスを通る光の経路を計算しています。ガラスをななめから覗き込むと透明度が低下します。

運転台まわりです。窓ガラスは、後期の特徴=パノラミックウィンドウです。細部のディティールは、SSAOにより表情豊かにレンダリングされています。

VRM-NX SSAO実装

次回更新でSSAOを実装します。

SSAOは、スクリーンのデータをもとに環境光の遮蔽状態を決定して、環境光の陰影をつける技術です。

SSAOで計算された環境光の陰影です。プラットホームの椅子、支柱のH型鋼材の陰影などが計算されています。車両も複雑な機器の形状によって発生する陰影が再現されています。

SSAOの結果をライトバッファに合成した画像です。立体感の密度が向上しています。

VRMNXに搭載したSSAOは、厳密にはSSAOではありません。もともとのSSAOは、ピクセルの深度をもとに遮蔽率を計算する仕組みです。新開発のVRMNXのSSAOは、深度は使わず、周辺ポリゴンの傾斜度から陰影を類推する仕組みになっています。H型鋼材のような形状は、鋭い影が立ち上がるようになっています。

最終的なレンダリング結果です。細部の立体感が向上しています。

NXシステム:プレリリースのご案内

パッケージ版NXシステムの準備のため、6月中旬よりプレリリースを開始します。プレリリースでは、既存の鉄道模型シミュレーター5ユーザー様にプレリリース版のNXシステムをリリースする予定です。
詳細は、上記画像をクリックして、案内ページをご参照ください。

アンロック対象になる鉄道模型シミュレーター5のうち物理パッケージ製品は、在庫が少なくなっております。ご希望の方は、お早めにお求めください。

VRMONLINE-NX 新レンダリング始動!

βテストにご参加いただきまことにありがとうございます。

ビルド90を公開しました。新しいレンダリングエンジンを統合しました。実感的なシーンをお楽しみください。

新しいエンジンでは、被写界深度が利用できます。フォーカス範囲をビュワーで調整できます。フォーカス範囲を狭めれば、ティルトシフトレンズで撮影したような模型風写真にもなります。

新レンダリングエンジンは、実装を継続して行っています。今後は、シャドーマップ、SSAO、ミー散乱などを搭載予定です。

VRMONLINE-NX ビルド82公開

βテストにご参加いただきまことにありがとうございます。

ビルド82を公開しました。制式レンダリングエンジンの準備工事をすすめています。

制式エンジンの搭載準備で、Drawリストの新しいエンジンを適用しました。テストエンジンと比較して、フレームレートが倍速以上になっています。

開発中の制式エンジンの夜景サンプルです。(ビルド82には未搭載)
EF58の写真になります。EF58は、NXシステム向けに開発した車両データです。運転台と室内の点灯状態を個別に設定できます。

VRMONLINE-NX 夜景サンプル画像

βテストにご参加いただきまことにありがとうございます。

制式レンダリングエンジンの統合作業をすすめています。

VRMNX専用に新規開発しているレンダリングエンジンです。
鉄道に特化した新しいシェーダーを搭載しています。

開発中の夜景シーンの画像です。新しいタイプのレンダリングエンジンで夜景を表現しています。一部のビル、車両をのぞき使用しているプラットホーム、レールは、スターターキットに含まれている部品です。照明などにハードウェアの成約があったV4時代のポリゴンですが、全体にいい雰囲気になっています。
(V4時代に制作された部品のため、プラットホームに組み込まれているライトが1つしかありません。)

新しいエンジンでは、ライトを多数使用できるようになりました。プラットホームの照明が制限なく表示できるだけでなく、車両のヘッドライトによる照射もリアルタイムで表現できるようになりました。トンネル内部も照射されます。

VRMONLINE-NX 次回更新で準備工事実施

βテストにご参加いただきまことにありがとうございます。

次回更新にて、制式レンダリングエンジンの実装準備工事に実施します。ポリゴンのななめエッジをスムーズにするアンチエイリアスは、次回更新で停止になります。ハードウェアによるアンチエイリアスのかわりにシェーダーによるアンチエイリアスを採用検討しています。

新しいレンダリングエンジンの開発は、最初の山場を超えました。多彩な表現をシェーダーでカバーするための実装作業を集中的にすすめています。

VRMONLINE-NX Pythonモジュールの検索パス

NXシステムの組み込みPythonには、標準的なモジュールライブラリを用意しています。さらにモジュールを拡張する場合は、WindowsにインストールしたPythonをモジュールの検索パスに追加します。

#レイアウトスクリプトに記述
import sys

sys.path.append("C:\Python37\Lib")
sys.path.append("C:\Python37\Lib\site-packages")

#このあとに追加した検索パスから読み込むモジュールをimportする

sysをimportして、sys.pathにモジュールの検索パスを追加します。追加する検索パスは、WindowsにインストールしたPythonのパスを指定します。

“Lib”の他に”Lib/site-packages”を追加してください。pipでインストールしたモジュールもimportできます。さらに必要に応じてDLLsも検索パスに追加してください。

検索パスを追加した環境でimportした場合、環境依存になります。レイアウトを公開する場合はご注意ください。

VRMONLINE-NX スクリプトでゲームパッド

βテストにご参加いただきまことにありがとうございます。

ビルド60にて追加したゲームパッド関数のサンプルです。

ゲームパッドは、最大4台をPCに接続、スクリプトから認識することができます。

IsGamepadConnected()関数は、ゲームパッドが接続されているか確認します。
デバイス番号を0から3のいずれか1つで指定、当該デバイスが接続されていればTrueを返します。

GetGamepad系関数は、ボタンが押されていた場合、Trueを返します。この関数もデバイス番号を指定します。

AnalogStick関数は、16ビットの符号付き整数で傾き具合を返します。

サンプルは、編成スクリプトのframeイベントでゲームパッドの状態を表示するウィンドウを開いています。
このビルドからSYSTEM()関数を追加しました。この関数はLAYOUT().SYSTEM()と同じ動作です。記述を短縮できます。

#OBJID=6
import vrmapi

def vrmevent_6(obj,ev,param):
    if ev == 'init':
        obj.SetEventFrame()
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        dummy = 1
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        vrmapi.ImGui().Begin("w1","Sample")
        vrmapi.ImGui().Text( "pad0-> " + str(vrmapi.SYSTEM().IsGamepadConnected(0)) )
        vrmapi.ImGui().Text( "pad1-> " + str(vrmapi.SYSTEM().IsGamepadConnected(1)) )

        vrmapi.ImGui().Text( "[0]-A " + str(vrmapi.SYSTEM().GetGamepadA(0)) )
        vrmapi.ImGui().Text( "[0]-B " + str(vrmapi.SYSTEM().GetGamepadB(0)) )
        vrmapi.ImGui().Text( "[0]-X " + str(vrmapi.SYSTEM().GetGamepadX(0)) )
        vrmapi.ImGui().Text( "[0]-Y " + str(vrmapi.SYSTEM().GetGamepadY(0)) )

        vrmapi.ImGui().Text( "[0]-Analog L " + str(vrmapi.SYSTEM().GetGamepadAnalogStickLY(0)) )
        vrmapi.ImGui().Text( "[0]-Analog R " + str(vrmapi.SYSTEM().GetGamepadAnalogStickRY(0)) )

        vrmapi.ImGui().End()
    elif ev == 'couple':
    #以下省略