EyeMot3D_Game00の的の画像を変更する簡易プログラム(2025年版)

島田の日常

先日2月8日に開催した第22回公開シンポジウムでは当センターでのICT機器利用と遊びの事例を紹介しました。
その中で、視線入力ソフトEyeMoT3D_Game00では、簡易的なプログラムを用いて的の画像を切り替えて使っていることをご紹介したのですが、参加者の方からプログラムを公開してほしいとのお声をいただきましたので、こちらの記事で紹介したいと思います。

実は2021年に一度記事にしたことがあったのですが、このときは試行錯誤でコードを書いていましたし、EyeMoTのフォルダ構成も少し変わっていますので、現時点での最新版(2024年07月24日版)での利用を想定したものを用意しました。(以前の記事はこちら

(基本)任意の画像に変更するImage Circle

EyeMoT3Dで任意の画像を利用するには、設定から[画面表示]に進み、[ターゲット]の項目から[Image Circle]を選びます。

そしてEyeMot3Dのフォルダ内にある「YOUR_RESOURCES」フォルダに画像を入れておくと、すべてのユーザー(01_MOMOTAROとか)共通でこの画像を使ってくれます。
(ユーザーで分けてそれぞれ画像を入れておいてもいいのですが、ユーザーを変えると設定も一緒に変わってしまうので、当センターではユーザーは固定したまま使っています。)

ピコピコルームでは、あらかじめ「YOUR_RESOURCES」フォルダ内に様々な画像の入ったフォルダを作っておき、以下の簡易的なプログラムで中身を入れ替えて使っています。


画像を入れ替えるプログラム

以下のような動きをします。(プログラムはVBScriptを利用)

こんな感じで、プログラムを開いて目的のフォルダを選ぶだけでOKです。


ソースコード

プログラムのソースコードは以下のようになっています。
コードを見ると頭が痛くなるという方は、中身は見ずに次に進んで大丈夫です。

'EyeMoT3D_Game00の画像の変更プログラム 2025.02.10修正版
'
'----------使い方---------
'EyeMoT3D_Game00のフォルダ内にある[YOUR_RESOURCES]の中に好きな名前のフォルダを作り、その中にこのプログラムを置いてください。
'同じフォルダ内に好きな画像を集めたフォルダを置いておくと、その中の画像をコピーして利用します。
'-------------------------
'
Option Explicit
On Error Resume Next

Dim objFS, objShell, objFolder
Dim scriptFolderPath, targetFolderPath, parentFolderPath, exeFilePath, selectedFolderPath, selectedFolderName

' ファイルシステムオブジェクトを生成
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")

' このVBAが置かれているフォルダ(= [任意のフォルダ])
scriptFolderPath = objFS.GetParentFolderName(WScript.ScriptFullName)

' [YOUR_RESOURCES] フォルダのパス(VBAの1階層上)
targetFolderPath = objFS.GetParentFolderName(scriptFolderPath)

' [一番上の階層] のパス([YOUR_RESOURCES] の1階層上)
parentFolderPath = objFS.GetParentFolderName(targetFolderPath)

' [一番上の階層] に EyeMoT3D_Game_00.exe があるかチェック
exeFilePath = parentFolderPath & "\EyeMoT3D_Game_00.exe"
If Not objFS.FileExists(exeFilePath) Then
    MsgBox "EyeMoT3D_Game_00.exeがフォルダ内に確認できませんでした。"& vbCrLf & "EyeMoT3D_Game00フォルダ内の[YOUR_RESOURCES]内に任意のフォルダを作り、その中にこのファイル(VBA)を入れてください。", vbExclamation, "エラー"
    WScript.Quit
End If

' [任意のフォルダ] 内の画像が入っているフォルダを選択
Set objFolder = objShell.BrowseForFolder(0, "画像が入っているフォルダを選択してください。", 0, scriptFolderPath)

' キャンセルされた場合は終了
If objFolder Is Nothing Then
    WScript.Quit
End If

' 選択されたフォルダのパスとフォルダ名を取得
selectedFolderPath = objFolder.Self.Path
selectedFolderName = objFS.GetFileName(selectedFolderPath) ' フォルダ名のみ取得

' 既存の画像を削除(YOUR_RESOURCES内のjpg/png)
objFS.DeleteFile targetFolderPath & "\*.jpg", True
objFS.DeleteFile targetFolderPath & "\*.png", True

' 選択したフォルダ内の jpg/png を [YOUR_RESOURCES] にコピー
objFS.CopyFile selectedFolderPath & "\*.jpg", targetFolderPath, True
objFS.CopyFile selectedFolderPath & "\*.png", targetFolderPath, True

' 完了メッセージ
MsgBox "「" & selectedFolderName & "」の画像に置き換えました。", vbInformation, "完了"

' オブジェクト解放
Set objFS = Nothing
Set objShell = Nothing
Set objFolder = Nothing

大まかに説明すると、以下のような動作をしています。

  1. 自身が置かれているフォルダ(「YOUR_RESOURCES」の中に新しく作ったフォルダ)を取得
  2. 誤動作防止のため、EyeMoT_Game00のフォルダ内であるかチェック(EyeMoTのフォルダ内でしか動かないようにした)
  3. 自身が置かれているフォルダ内にある、画像を入れてあるフォルダを選ぶ(キャンセルしたら終了)
  4. YOUR_RESOURCESに入っている画像(jpg,png)を削除する
  5. 3.で選んだフォルダ内にある画像(.jpg、.png)をコピーしてYOUR_RESOURCESに貼り付ける

使い方

プログラムを用意する

このプログラムは直接ダウンロードできるようにはしていませんので、以下の方法で準備をしてください。

1.すべてのプログラムから「メモ帳」を探して開く
2.上記のソースコードを全部コピーして貼り付ける


3.[ファイル]→[名前を付けて保存]に進む
4.[ファイルの種類]を[すべてのファイル]にし、ファイル名の最後に「.vbs」と入力して、保存する。(保存場所、ファイル名は何でもOK。)

保存先にプログラム(.vbsファイル)が保存されます。保存したらメモ帳は閉じてOK。

プログラムを利用する

1.EyeMot3D Game_00フォルダ内にある、[YOUR_RESOURCES]フォルダを開き、好きな名前のフォルダを作る。(例では「画像フォルダ」)

2.上で作成したプログラム(.vbsファイル)を1.で作ったフォルダ内に置く(重要)
(階層としては[EyeMot_Game00]→[YOUR_RESOURCES]→[作ったフォルダ]の中)

3.作ったフォルダ内に、使いたい画像を更にフォルダ分けして用意しておく。
(フォルダの中にイラストや写真のファイルを入れておきます)

4.プログラムをダブルクリックして開く。

チェックポイント

ここでエラーが出た場合は、プログラムを置く場所が間違っている可能性があります。

EyeMoT3D_Game00のフォルダ内でないと動かないようにしてありますので、もう一度ファイルを置く場所を確認してください。

5.フォルダの選択画面から、変更したい画像が入っているフォルダを選んで[OK]を押す。

6.[YOUR_RESOURCES]フォルダ内の画像が削除され、選んだフォルダの画像がコピーされる。

最後に、使いやすくなるようプログラムファイルのショートカットを作って、使いやすい場所に置いておけば完了です。


最初の手順はちょっと多いですが、たくさん画像を入れ替えている方ほど楽になると思います。

慣れてきて完了メッセージもいらないなと思ったら、54~55行目を削除してしまえばOKです。

よろしければ試してみてください。

執筆者 ピコピコルーム 神田

島田の日常