週報_161220

●11月24日~11月30日の活動記録です。
11/24_20:30 – 23:30 (3:30)[自宅] 実装、動画チュートリアル編集
11/28_11:00 – 12:30 (1:30)[自宅] 実装、動画チュートリアル編集
____14:00 – 17:00 (3:00)[研究室] 実装、動画チュートリアル編集
11/29_18:30 – 20:45 (2:15)[研究室] 実装
____21:30 – 4:30 (7:00)[自宅] 実装、動画チュートリアル編集

合計:17時間15分(研究室:5時間15分)

●12月8日~12月14日の活動記録です。
12/ 8_14:00 – 18:30(4:30)[研究室] 論文の3・4章の作成
12/10_15:00 – 17:00(3:00)[自宅] デモのバグ取り
____21:00 – 3:00(4:00)[自宅] 手法系の動画改善(ver.2)
12/11_13:00 – 14:00(1:00)[自宅] ユーザーテストを実施
12/12_10:00 – 14:00(4:00)[自宅] 手法系の動画改善(ver.3)
____16:00 – 19:00(3:00)[研究室] 第二章・第三章の作成
____20:00 – 23:00(内休憩1時間)(3:00)[自宅] 第二章・第三章の作成
12/13_9:00 – 12:30(3:30)[自宅] 第三章の作成
____14:30 – 16:30(2:00)[研究室] 第三章・第四章の作成、参考文献の作成

合計:27時間30分(研究室:9時間30分)

日報_161208

14:00 – 18:30 論文の3・4章の作成

【ユーザーテストについて】
本研究の学習ツールの強み
〇(手法系による) 定着しやすい学習の提供
〇(ワークフロー図による) 全体像の把握の容易化
●部品点数の多い制作物の管理容易化
●チュートリアル作りの容易化および規格化
→〇を証明するためにユーザーテストを行う?

※ユーザーテストの結果
円柱をドーナツ型にするのに1時間かかった…
・5分の動画を全部は見てくれない
・備考で書いたテキストを読んでくれない
・途中で誤操作した時にフォローできない
・ネット検索は少ししてくれた

【ユーザーテスト対策】
・制作物はさらに簡易化
→動画組のほうが早くても良いかも…

・第二制作物を設定
→定着度を測る

・備考欄の改良
→「動画の何秒から何秒までを見ろ!」みたいなのを赤文字表記
→メッセージボックスを表示させるか…?

・キーワードやリンクの表示
→よりネット検索を利用しやすく(他力本願感…)

週報_11/23

11月17日~11月23日 の活動記録です。

【取り組むべき課題】
・デモの制作とテスト、改良
・テストで作る制作物の決定
・動画チュートリアルの用意
・動画組が使用する動画チュートリアルの用意
・カンペ用紙の用意
・質問内容の用意
・テスター、日程、場所の相談と決定

【達成度合いと課題】
・デモの制作
→試作は終了。研究室の人などに触ってもらい手直しを行う
→まだ .exe 化はしていない

・テストで作る制作物の決定
→タイヤとホイールの形状を簡易にしたもの
→用意した3Dモデルと同じものを作ってもらう
→自分でやったのでも15分ほどかかっているため、更に削る必要あるかも…

・動画チュートリアルの用意
→撮影のみ終了

・動画組が使用する動画チュートリアルの用意
→撮影のみ終了

・質問内容の用意
→テストの前後で2つ作成。意見を聞いて修正

・テスター、日程、場所の相談と決定
→進まず…

【活動時間】
11月17日 14:00~16:00(2h)_研究室 デモ実装に必要なライブラリのテスト
11月18日 10:00~2:00(5h)_自宅 制作物の決定、撮影、デモの実装(ライブラリのテスト)
11月19日 1:00~3:00(2h)_自宅 デモの実装(ライブラリのテスト)
11月20日 10:30~13:30(3h)_自宅 動画チュートリアルの撮影、デモの実装(ライブラリのテスト)
11月21日 11:30~13:30(2h)_自宅 デモの実装(ライブラリのテスト、バグ取り)
15:00~19:00(4h)_研究室 デモの実装(テストしたものを実装)
11月22日 15:00~16:30(1.5h)_研究室 デモの実装(テストしたものを実装、バグ取り)
10:30~12:30(2h)_自宅 アンケートの作成
11月23日 17:00~18:00(1h)_研究室 デモの実装(テストしたものを実装)

計:20.5時間 (研究室:8.5時間)

ユーザーテストについて_161118

【ユーザーテストについて】
○質問はするとして、実際に作業してもらうのは30分は長過ぎ
→造形をもっとシンプルにする

○テスターは10人じゃ少ないくらい
→2チームに分けることを考えると、、、

○場所は講実5階は使えるとは思う
→連絡なり掛札なりが必要
→時間が決まらないことにはなんとも言えない

週報_11/16

11月10日~11月16日 の活動記録です。

【取り組むべき課題】
・ワークフロー表示部分の修正
・チュートリアル動画の作成
・ユーザーテストの計画と準備

【達成度合いと課題】
・ワークフロー表示部分の修正
→GUIの思案を少ししたのみで未修正…
→テストのためにワークフロー表示部分のみを実装した簡易版を優先する…?

・チュートリアル動画の作成
→撮影:乗用車 に使われる手法系を撮影 (まだ未撮影が残る)
●面貼り系
●パネルライン系
●回転コピー系
●スプリング系
●厚み付け系

→編集:進まず…

・ユーザーテストの計画と準備
→内容 :動画組とデモ組に分けて比較する
●制作の全体像の把握度
→→→制作の流れなどの質問をし、回答までのスピードや正確さを比べる
●制作スピード
→→→指定したモデルを作ってもらい、スピード等を比べる
●とっつき易さなどの印象
→→→デモを使った印象、わかり易さ、悪い点等の質問をする
→制作物 :時間のかからないもの、未決定
→場所 :講義実験棟の上の階などが使える…?⇒要確認
→テスター :未決定⇒要相談
→日程 :未決定⇒要相談

【来週の目標】
→ユーザーテストの用意を最優先
・ワークフロー部分を集中的に実装
・動画チュートリアルの用意
・質問内容の用意
・テストで作る制作物の決定
・動画組が使用する動画の選定(または用意)
・カンペ用紙の用意
・テスター、日程、場所の相談と決定

【活動時間】
11月10日 16:00~17:00 (1.0h)_研究室 GUIの思案
11月11日 16:00~17:00 (1.0h)_研究室 ユーザーテスト内容の思案
11月12日 未活動
11月13日 10:00~13:00 (3.0h)_自宅 動画の撮影
13:30~15:30 (2.0h)_自宅 動画の撮影
11月14日 12:30~14:00 (2.oh)_自宅 動画の編集
11月15日 10:30~11:30 (1.oh)_研究室 動画の編集
11月16日 19:30~21:30 (2.0h)_自宅 ユーザーテスト内容の思案
計:12時間 (研究室:3時間)

週報_10/27

10月13日~10月27日 の活動記録です。
先週分の活動記録を書くのを忘れていました。すみません。

【先々週出た課題】
・データの読み取りに失敗するバグの修正
・動画再生部分の実装
・選択GUI部分の改善
・動画チュートリアルの撮影
・動画チュートリアル(仮バージョン)作成

【達成度合いと課題】
・データの読み取りに失敗するバグの修正
→修正完了
・動画再生部分の実装
→ワークフロー図のボタンを押すと動画が再生される、というところまで実装
・選択GUI部分の改善
→パーツの除外部分を実装
→他のGUIも、未入力のままだとメッセージが出て次に進めない仕様に修正
・動画チュートリアルの撮影
・動画チュートリアル(仮バージョン)作成
→加納先生に教えてもらった画面キャプチャソフトでの撮影中
→編集には入れていない

【来週の目標】
・動画チュートリアルの完成、修正
・ワークフローGUI部分の改善
・ユーザーテストの内容確定
・ユーザーテストの実施準備

【活動時間】
10月23日 15:00~16:00 (1.0h)_研究室 キャプチャのテスト
10月22日 23:00~23:30 (0.5h)_自宅 動画撮影
10月23日 15:00~15:30 (0.5h)_研究室 Gui関連の勉強
10月26日 23:00~23:30 (0.5h)_自宅 動画撮影
計:2.5時間(研究室:1.5時間)

面接やバイトもありましたが、来週はしっかり立て直します。

週報_10/12

10月6日~10月12日の活動記録です。

【先週出た課題】
・動画チュートリアルに文字が多く、見るのが大変そう
→ナレーションなど視野に、複数パターンを作って見て様子を見たい。時間が許せばだけど…

・エラーや実装面の問題
→藤堂先生の協力のおかげでクラス・継承まわりの問題は解決
→GUIの改善に関しても助言をいただき、便利そうなライブラリのサンプルプログラムを教えて頂いたので、触りながら実装方法を思案する

【今週の目標】
・選択GUI部分のバグ取り
・ファルダ探索部分の実装
・選択GUI部分とファルダ探索部分の連携
・動画再生部分のテスト
・動画再生部分の実装
・ワークフローGUIの改善 (PyQtの勉強)

【達成度合いと課題】
・選択GUI部分のバグ取り
・ファルダ探索部分の実装
・選択GUI部分とファルダ探索部分の連携
→以上の3つは完了したものの、データの読み取りに失敗するバグが発生中
→GUIの使い勝手として、現状のはウィンドウがたくさん出てきて面倒なので改善したい

・動画再生部分のテスト
・動画再生部分の実装
→PyQt5 を使用したものと openCV を使用したものがあり、テストを少しした、というところまでで、まだ実装に至れていない

・ワークフローGUIの改善 (PyQtの勉強)
→サンプルプログラムを触ってみて、使えそうなものをいくつかテストして、というところまでで、こちらも実装に至れず

【来週の目標】
・データの読み取りに失敗するバグの修正
・動画再生部分の実装
・選択GUI部分の改善
・動画チュートリアルの撮影
・動画チュートリアル(仮バージョン)作成

【活動時間】
今週はぜんぜん時間を取れていないです。

10月6日
19:00~23:00 (4h)_自宅 バグ取り作業

10月7日
20:00~24:00 (4h)_自宅 サンプルプログラムを触り、使えそうなライブラリの目星を付ける

10月8日
20:30~23:00 (2.5h)_自宅 条件選択のGUI生成に必要な、データ探索部分の実装
23:00~24:30 (1.5h)_自宅 以前作った条件選択GUIの雛形を移植

10月9日
20:00~27:30 (6.5h)_自宅 条件選択GUIとデータ探索部分の紐付け(なか休み1時間ほど)

10月10日
23:00~27:30 (4.5h)_自宅 以前に目星を付けたサンプルコードから勉強・テスト

10月11日
14:30~16:00 (2.5h)_大学 動画再生部分に使えそうなもの調べ、テスト
20:00~22:00 (2h)_大学 動画再生部分に使えそうなもをテスト、エラー修正を試みる

計:26時間(研究室:0時間)

今週は (先週もですが…) 研究室での作業時間が0でマズイので、少しづつでも研究室で情報共有などをしていかないとな…と反省。作業をやるのが夜中なのもあるので、少しづつ夜型生活から夜型生活に切り替えてかないとな…と反省。

なんだか先週と同じこと言ってて進歩ないですが…

 

週報_10/06 (都合により10/07記載)

9月30日~10月5日の活動記録です。
(メールした内容の写し)
【今週の目標】
・ワークフロー図生成部分の実装
・ライブラリ部分の改善
・ライブラリ部分とワークフロー図生成部分の連携
_____
【達成度合いと課題】
・ワークフロー図生成部分の実装と連携は上手くいったものの、ライブラリ内での情報の持ち方を改善する必要あり
・モジュール同士を連携するところで問題発生中
(継承まわりを勉強すれば解決…?)
_____
【来週の目標】
・モジュール連携での問題解決
・動画再生部分の実装
・条件選択GUIとの連携
・動画チュートリアル用素材の撮影
_____
【活動時間】
 9月29日
16:00~18:00 (2h)_研究室 テキストから要素を取り出すシステムの実装
22:00~24:00 (2h)_自宅 車(制作物)ワークフローデータの作成
 1:00~ 6:00 (5h)_自宅 取り出した要素を整理するシステムの実装
 6:30~ 7:30 (1h)_自宅 ワークフローGUIの作成
 7:30~ 9:00 (1.5h)_自宅 ワークフローGUIとテキストからとった要素の接続
30日
15:00~17:00 (2h)_研究室 規則の改良・車(制作物)ワークフローデータの改良
17:00~17:30 (0.5h)_研究室 ライブラリ機能の思案
10月 1日
21:00~ 1:30 (4.5h)_自宅 読み取り機能の改良
 2:00~ 3:00 (1h)_自宅 ライブラリ機能の実装
 2日
19:00~ 1:00 (6h)_自宅 読み込み機能とライブラリ機能の連携・バグ取り
計25.5 時間 (研究室:4 時間)

作業日誌_9/29

とりあえず初回なので、ここまでの進捗みたいなのを上げていこうかなと思います。


[システム実装]

・GUIシステム

とりあえず皮だけ、ということでボタンと備考の表示ボックスを配置。新しくウィンドウを生成するのが上手く行ってない… pyQt周りなのか、クラス周りなのか…(継承あたりをちゃんとすれば良いのかもだけど、ネットからのコピペ改造コードなのもあってよう分からん…)

コード:(あれ、階層が飛んでる…?これPythonの天敵かも)

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

filepath = ‘workflowImage.png’

class UI1:
def __init__(self):
self.w = QWidget()
self.w.setGeometry(500, 200, 450, 100)
self.w.setWindowTitle(‘ui_01’)

grid = QGridLayout(self.w)

self.groupBoxUse = QGroupBox(“モデルの使用目的”, self.w)
layout1 = QGridLayout()

btnUse1 = QRadioButton(“pre – Rendering”, self.w)
btnUse1.clicked.connect(self.onClickedPre)
layout1.addWidget(btnUse1, 1, 0)

btnUse2 = QRadioButton(“real time – Rendering”, self.w)
btnUse2.clicked.connect(self.onClickedReal)
layout1.addWidget(btnUse2, 2, 0)

self.groupBoxUse.setLayout(layout1)
grid.addWidget(self.groupBoxUse)

self.groupBoxPro = QGroupBox(“制作物”)
layout2 = QGridLayout()

btnPro1 = QRadioButton(“Characters”, self.w)
layout2.addWidget(btnPro1, 1, 0)

btnPro2 = QRadioButton(“Props”, self.w)
layout2.addWidget(btnPro2, 2, 0)

btnPro3 = QRadioButton(“BGs”, self.w)
layout2.addWidget(btnPro3, 3, 0)

self.groupBoxPro.setLayout(layout2)
grid.addWidget(self.groupBoxPro)

self.groupBoxSoft = QGroupBox(“使用可能なソフトウェア”, self.w)
layoutSoft = QGridLayout()

btnSoft1 = QPushButton(“Maya”, self.w)
btnSoft1.setCheckable(True)
layoutSoft.addWidget(btnSoft1)

btnSoft2 = QPushButton(“Blender”, self.w)
btnSoft2.setCheckable(True)
layoutSoft.addWidget(btnSoft2)

btnSoft3 = QPushButton(“Zbrush”, self.w)
btnSoft3.setCheckable(True)
layoutSoft.addWidget(btnSoft3)

self.groupBoxSoft.setLayout(layoutSoft)
grid.addWidget(self.groupBoxSoft)

self.textbox = QLineEdit(self.w)
msgStart = “条件を選択してください”
self.textbox.setText(msgStart)
grid.addWidget(self.textbox, 3, 0)

buttonOK = QPushButton(‘OK’, self.w)
grid.addWidget(buttonOK, 3, 1)
QObject.connect(buttonOK,SIGNAL(‘clicked()’),self.onClickedOK)

def onClickedPre(self):
msgPre = “pre-rendering : 事前にレンダリングされているものを使用する作品”
self.textbox.setText(msgPre)

def onClickedReal(self):
msgReal = “realTime-rendering : 入力に応じてその都度レンダリングをかける作品”
self.textbox.setText(msgReal)

def show(self):
self.w.show()

def onClickedOK(self):
self.second = UI2(self.w)
self.second.show()

class UI2:
def __init__(self,parent=None):
self.w = QDialog(parent)
self.w.setGeometry(500, 625, 350, 100)
self.w.setWindowTitle(‘ui_02’)

grid = QGridLayout(self.w)

self.groupBoxKnd = QGroupBox(“制作物の種別”, self.w)
layout3 = QGridLayout()

btnknd1 = QRadioButton(“car”, self.w)
btnknd1.clicked.connect(self.onClickedCar)
layout3.addWidget(btnknd1, 1, 0)

btnknd2 = QRadioButton(“book”, self.w)
layout3.addWidget(btnknd2, 1, 1)

btnknd3 = QRadioButton(“robot”, self.w)
layout3.addWidget(btnknd3, 2, 0)

btnknd4 = QRadioButton(“cup”, self.w)
layout3.addWidget(btnknd4, 2, 1)

btnknd5 = QRadioButton(“gun”, self.w)
layout3.addWidget(btnknd5, 3, 0)

btnknd6 = QRadioButton(“lope”, self.w)
layout3.addWidget(btnknd6, 3, 1)

self.groupBoxKnd.setLayout(layout3)
grid.addWidget(self.groupBoxKnd)

self.groupBoxPart = QGroupBox(“作る必要のあるパーツ”, self.w)
layoutPart = QGridLayout()

btnPart1 = QPushButton(“body”, self.w)
btnPart1.setCheckable(True)
layoutPart.addWidget(btnPart1, 1, 0)

btnPart2 = QPushButton(“tire”, self.w)
btnPart2.setCheckable(True)
layoutPart.addWidget(btnPart2, 1, 1)

btnPart3 = QPushButton(“tire”, self.w)
btnPart3.setCheckable(True)
layoutPart.addWidget(btnPart3, 2, 0)

btnPart4 = QPushButton(“suspension”, self.w)
btnPart4.setCheckable(True)
layoutPart.addWidget(btnPart4, 2, 1)

btnPart5 = QPushButton(“window”, self.w)
btnPart5.setCheckable(True)
layoutPart.addWidget(btnPart5, 3, 0)

btnPart6 = QPushButton(“seat”, self.w)
btnPart6.setCheckable(True)
layoutPart.addWidget(btnPart6, 3, 1)

btnPart7 = QPushButton(“light”, self.w)
btnPart7.setCheckable(True)
layoutPart.addWidget(btnPart7, 4, 0)

btnPart8 = QPushButton(“muffler”, self.w)
btnPart8.setCheckable(True)
layoutPart.addWidget(btnPart8, 4, 1)

self.groupBoxPart.setLayout(layoutPart)
grid.addWidget(self.groupBoxPart)

self.textbox = QLineEdit(self.w)
msgStart = “制作物の種類と作るパーツを選択してください”
self.textbox.setText(msgStart)
grid.addWidget(self.textbox, 3, 0)

button2 = QPushButton(‘GO!’, self.w)
grid.addWidget(button2, 4, 0)

def onClickedCar(self):
msgCar = “車を制作します”
self.textbox.setText(msgCar)

def show(self):
self.w.exec_()
if __name__ == “__main__”:
app = QApplication(sys.argv)

ui1 = UI1()
ui1.show()

# workflow = workFlow()
# workflow.show()

sys.exit(app.exec_())

 

・読込み、辞書化検索システム

ワークフロー追加のし易さをどうしようってことで、何か文法を決めて.txtデータに書いて、それをシステムが読み込んで生成してくれたら便利だな。という話になった。とりあえず作ったのはディレクトリ内のファイル名を読み込んで辞書に突っ込んで、任意の検索ワードに引っかかるものを見つける、みたいなシステム。.txtの中身を読み込むのもサイトにリファレンスあったので行ける、かな…?

コード:

○add_dictionary.py (ディレクトリの中身を読み込んで辞書に突っ込む)
import os
from collections import Counter

#インポート確認

print(“import_addDic”)

#ディレクトリの中身を初期辞書に書き込む
for searchpath, dirs, files in os.walk(‘tech’):
dict = {‘name’:files}

print(dict)

num = 1
dictImport = {0:’dictImport’}

counter = Counter(dict[‘name’])
for word, cnt, in counter.most_common():
dictImport[num] = word
num += 1

#テスト用
print(dictImport)

○search_dictionary (検索ワードが頭に付いてるものを別の辞書に入れる)

import add_dictionary as addDict

#初期辞書に任意の検索をかけて、合致するものの辞書を作る
num = len(addDict.dictImport)
print(num)

dictSearch = {0:’dictSearch’}

for i in range(num):
search = addDict.dictImport[i].startswith(‘image_01’)

if search == True:
dictSearch[i] = addDict.dictImport[i]

print(dictSearch)
・ワークフロー図生成システム

とりあえず変数の値に合わせてボタンなどの生成個数を変える、みたいなのを作った。ただ生成したボタンの名前を変えたりが上手く行かなかったかも。あとは矢印みたいなのの表示とかどうすれば良いのか分からん…

コード:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class workFlow(QWidget):
print(‘import makeWorkFlow’)

def makeWorkFlow(self):
numA = 3
numB = 5

self.w = QWidget()
self.w.resize(300, 500)
self.w.move(300, 300)

self.w.setWindowTitle(‘Workflow’)

grid = QGridLayout(self.w)

#btnUse1 = QRadioButton(“pre – Rendering”, self.w)
#btnUse1.clicked.connect(self.onClickedPre)
#layout1.addWidget(btnUse1, 1, 0)

#btnUse2 = QRadioButton(“real time – Rendering”, self.w)
#btnUse2.clicked.connect(self.onClickedReal)
#layout1.addWidget(btnUse2, 2, 0)

for i in range(numA):
self.groupBoxUse = QGroupBox(“model”, self.w)
layout1 = QGridLayout()

for e in range(numB):
btnA = QPushButton(‘button’, self.w)
layout1.addWidget(btnA, 1, e)
btnA.clicked.connect(self.PushButtonA)

self.groupBoxUse.setLayout(layout1)
grid.addWidget(self.groupBoxUse, 1, i)

print(‘makeButtonA!’)

self.w.show()

def PushButtonA(self):
print(‘Push A!’)

#このモジュール単体でのテスト用
if __name__ == ‘__main__’:
app = QApplication(sys.argv)

wf = workFlow()
wf.makeWorkFlow()

sys.exit(app.exec_())

 


[動画チュートリアル]

とりあえず研究合宿のために大急ぎで作った。


[その他]

ワークフロー図はこんな感じに作りたいかな… まだもっと改善できそうだけど。

workflow_car