23心理サイエンス基礎演習Ⅱ

授業の目的
本演習は心理学における実験研究に有用な、様々なテクニックを身につけることを目的とする。具体的には、従来の心理学に、プログラミング、CG、VR、電子工学、デジタルファブリケーション等の技術を組み合わせ、独創性の高い研究を実施する力を養う。

到達目標
1.プログラミングやデジタルファブリケーション、CGなどに関する各種ソフトウェア等に触れ、それらの技術を応用した実験刺激を作製できるようになる。
2.上記のスキルをベースに独自の研究アイデアを発案、他者にわかりやすく伝えることができるようになる。

授業コンテンツ
ガイダンス
VRゴーグルの使い方を知る
UnityでVRを使う
3Dプリンタの使い方を学ぶ
3Dデータの作成方法を学ぶ
Arduino入門(1)
Arduino入門(2)

TPSを作ってみる(2) 2023

TPSゲームを作ってみる2
 今日は先週に続いて、TPSでゲームっぽいものを作り込んでみましょう。
1.敵キャラに個性をつける、2.プロップ(小物)を設定する、3.爆弾をセット
の順番で参ります。課題がたまる時期なので、とりあえず動画を見て、できそうなところまでやっていただければOKです。もちろん、Unityを身に着けたいのであれば、全部やったほうがベターですが。でも夏休みにゆっくり、じっくりやるのでも良い気がします。必要なスクリプト等は下記リンクから入手してください。

リアクションの記入
 課題が終わった方は、下記リンクより、授業配信日を含め3日以内にリアクションを登録してください。ファイル等を送っていただく必要はありません。
心理サイエンス基礎演習2リアクション

取得したFitbitデータをグラフ化する

出力されたHRに関するデータ「HR_2023-06-26.csv」をPythonでグラフ化してみましょう。大まかな手順は下記の動画をご覧ください。

ChatGPTに、データのグラフ化を行うPythonスクリプト作成を依頼します。

00:00:00,74
00:01:00,64
00:02:00,63
00:03:00,65
00:04:00,65
00:05:00,62
00:06:00,65
00:07:00,63
00:08:00,66
00:09:00,65
00:10:00,65
00:11:00,67
00:12:00,66
00:13:00,66
00:14:00,69
00:15:00,72
00:16:00,73
00:17:00,69
00:18:00,67

上記のデータはHH:MM:SS形式で指定された各時刻の心拍数です。このデータの名前は、「HR_2023-06-26.csv」です。このデータを読み込んで、グラフ化するPythonスクリプトを書いてください。

データを扱うスクリプトを作成するときは、上記のように、サンプルを与えてやるとそれに合わせたスクリプトを作成してくれます。上記プロンプトをお黒と、ChatGPTが下記のようなスクリプトを作成してくれます。

import pandas as pd
import matplotlib.pyplot as plt

# データを読み込む
data = pd.read_csv('HR_2023-06-26.csv', header=None, names=['Time', 'HeartRate'])

# 時刻データを正しいフォーマットに変換
data['Time'] = pd.to_datetime(data['Time'], format='%H:%M:%S')

# グラフを描画
plt.plot(data['Time'], data['HeartRate'])
plt.xlabel('Time')
plt.ylabel('Heart Rate')
plt.title('Heart Rate Variation')
plt.xticks(rotation=45)
plt.show()


このスクリプトは、pandasとmatplotlibというライブラリを使っているようなので、ライブラリのインストール方法も聞きましょう。

上記のスクリプト実行に必要なライブラリのインストール方法を教えてください.

返答は下記のとおりです。

pip install pandas matplotlib

では、上記で作成されたPythonスクリプトを、plotHR.pyという名前で保存し、実行してみましょう。すると、下記のようなグラフが作成されるはずです。

このようにして、日本語で指示(プロンプト)を与えることで、各種の目的に応じたPythonスクリプトを作成可能です。ChatGPTが記述したスクリプトの意味がわからない場合は、それを「ここの処理どういう意味?」と質問することで、より深く学習可能です。

計測したデータをPythonで取得する

ここでは、Fitbitで計測されたデータをPythonで取得する方法を解説します。作業のおおまかな手順は下記の動画をご覧ください。

Anacondaのインストール
Python実行環境であるAnacondaのインストールを行う。とりあえずAnaconda3をダウンロードして道なりにインストール。Environmentから仮想環境「Fitbit」を作成し、「OpenTerminal」でターミナルを表示する。Pythonコマンドで動作を確認する。Ctrl+Zで対話モードを終了できる。インストールは、こちらのサイトが参考になる。

Fitbitの開発者向けサイトでアプリケーションを登録する
PythonからFitbitAPIを使うにはアプリの登録が必要となる。FitbitDevelopperサイトにログインして、Manage>RegisterAppの順で進み、アプリケーションを登録する。設定は以下の画像の通りにする。URL関係は全て「http://kodamalab.sakura.ne.jp/wordpress/?p=46853」、RedirectURLは、「http://127.0.0.1:8080/」とする。ページ内で作成された「OAuth 2.0 Client ID」と「Client Secret」をPythonスクリプト中で使用することになる。
Devサイトでのアプリ作成方法

Fitbit API Python Clientのインストール
GitHub – orcasgit/python-fitbit: Fitbit API Python Client Implementationからcodeボタンを押し、Zipファイルをダウンロードし、中身をCドライブ直下に配置する(こちらのサイトが参考になる)。さらに、下記コマンドで追加パッケージをインストールする。

pip install -r requirements/base.txt
pip install cherrypy 

Pythonスクリプトでクラウド上のファイルを取得
c:\python-fitbitフォルダに下記スクリプトをfitbit01.pyという名前で保存し、実行する。Anaconda Promptから下記コマンドを打ち込む

python fitbit01.py

#fitbit01.py
import sys
import fitbit
import gather_keys_oauth2 as Oauth2
  
print('Hello FitbitAPP3') 
  
USER_ID     = "ほげ"
CLIENT_SECRET = "ほげ"
  
DATE = "2021-06-03" # 取得したい日付
  
  
server = Oauth2.OAuth2Server(USER_ID, CLIENT_SECRET)
server.browser_authorize()
ACCESS_TOKEN = str(server.fitbit.client.session.token['access_token'])
REFRESH_TOKEN = str(server.fitbit.client.session.token['refresh_token'])
  
#print(ACCESS_TOKEN) print('\n') 
#print(REFRESH_TOKEN)print('\n') 
  
"""Authorization"""
auth2_client = fitbit.Fitbit(USER_ID, CLIENT_SECRET, oauth2=True, access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)
  
"""Getting data"""
#print('Getting data\n') 
#fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
   
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/heart', DATE, detail_level='1min')
stats = fitbit_stats['activities-heart-intraday']['dataset']
  
OUTPUT_FILE = "HR_%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
    csv_file.write(stats[var]['time'])
    csv_file.write(",")
    csv_file.write(str(stats[var]['value']))
    csv_file.write("\n")
csv_file.close()
  
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/steps', DATE, detail_level='1min')
stats = fitbit_stats['activities-steps-intraday']['dataset']
  
OUTPUT_FILE = "STEP%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
    csv_file.write(stats[var]['time'])
    csv_file.write(",")
    csv_file.write(str(stats[var]['value']))
    csv_file.write("\n")
csv_file.close()
  
##################################################
fitbit_stats = auth2_client.intraday_time_series('activities/calories', DATE, detail_level='1min')
stats = fitbit_stats['activities-calories-intraday']['dataset']
  
OUTPUT_FILE = "CALO%s.csv" % DATE
csv_file = open(OUTPUT_FILE, 'w')
for var in range(0, len(stats)):
    csv_file.write(stats[var]['time'])
    csv_file.write(",")
    csv_file.write(str(stats[var]['value']))
    csv_file.write("\n")
csv_file.close()

トラブルシューティング

・RedirectURLが、http://127.0.0.1:8080/で正しく動作しない場合
ポート8080をなにかのプログラムが使っている可能性がある。その場合は、RedirectURLを、「http://127.0.0.1:8088/」とし、python-fitbitフォルダ中のgather_keys_oauth2.pyの該当部分を「8088」に変更してスクリプトを実施する。

・Pythonのスクリプトは何で作ればいいの?
プログラミング用のテキストエディタ、Notepad++がおすすめです。

リアクション
下記のページから,感想,苦労した点などをお知らせください.
心理サイエンス応用演習1リアクション

キャラクタの配置 2023

前回授業へのコメント
 前回は光源の使い方を応用して,ホラーゲームのような環境を作成してみました。無料のアセットでも、質感が高いものがあることに驚かれた方も多いと思います。PCを買うのであればどのようなものが良いのか?との質問も複数いただきました。下記の動画で簡単に解説をしていますので、参考にしてください。

キャラクタを読み込んで見る
 ホラーっぽい背景に「お化けを配置したらもっと怖いだろう」という意見もあろうと思います。そこで、今回はキャラクタの読み込み、表示方法を紹介します。ここでは,Mixamoからモーション付きのキャラクを読み込み,シーン上に配置する方法を学びます。キャラクタの取り扱いができるようになると,様々な心理学的な実験に利用できるようになるので,利用法の幅が広がると思います。

リアクションの記入
 課題が終わった方は、下記リンクより、授業配信日を含め3日以内にリアクションを登録してください。ファイル等を送っていただく必要はありません。リアクションは出欠記録を兼ねており、その内容は成績評価の対象となることに留意してください。
心理サイエンス基礎演習1リアクション

TPSを作ってみる(1)2023

TPSゲームを作ってみる
 キャラクタを扱えるようになると、やっぱり自由に動かしてみたくなりますよね。キャラクタの表現方法は、基本的に1人称視点(FPS)と3人称視点(TPS)しかないと思いますが、体を動かしている感があるのはTPSかなと思います。今回と次回では、TPSゲームの作成を通して、キャラクタの使い方を学びましょう。完成すると、こんな感じのものができる予定です。今日の解説動画では、下記のアセットを使用しています。予めダウンロードしておくとスムーズに進められると思います。
・Standard Asset
・AllskyFree
・PBR Materials – Wood & Metal
・Industrial Models
Low Poly Props Pack 2023年現在利用不可のようです
Road Props PackおよびSimple Street Propsで置き換えてください

リアクションの記入
 課題が終わった方は、下記リンクより、授業配信日を含め3日以内にリアクションを登録してください。ファイル等を送っていただく必要はありません。
心理サイエンス基礎演習2リアクション

StandardAssetの追加

StandardAssetの導入方法
Unity2021などの新しいバージョンでは、アセットの導入方法が変わっています。特に、StandardAssetは、アセットストアから削除されてしまい通常の方法では導入が難しくなっています。下記の動画では、StandardAssetの導入方法を紹介します。

23心理サイエンス基礎演習Ⅰ

授業の目的
本演習は心理学における実験研究に有用な、様々なテクニックを身につけることを目的とする。具体的には、従来の心理学に、プログラミング、CG、VR、電子工学、デジタルファブリケーション等の技術を組み合わせ、独創性の高い研究を実施する力を養う。

到達目標
1.プログラミングやデジタルファブリケーション、CGなどに関する各種ソフトウェア等に触れ、それらの技術を応用した実験刺激を作製できるようになる。
2.上記のスキルをベースに独自の研究アイデアを発案、他者にわかりやすく伝えることができるようになる。

授業コンテンツ
ガイダンス
ゲームエンジンUnity入門
>インストール
>エディターを使う
>FPSコントローラー
>Terrain(地形)
>WebGLビルド
StandardAssetの導入方法

使用するコンピュータについて
実験室にはゲームエンジン使用や動画編集に適したノートPCが8台ほど備えられていますが、効率よく学習を進めるには自分用のPCを購入することも大切です。GeforceRTX3050もしくは3060を搭載しており、メモリーが16Gのマシンを購入するとよいでしょう。CPUは速いほどよいですが、それほど重要ではありません。2023年4月現在の価格は、10~13万円程度です。価格.comなどを参照して、適正価格のマシンを購入するようにしましょう。