タイムシートーTimeSheet - ExposureSheet - XSheet

アバター
Fabrice
Site Admin
記事: 204
登録日時: 金 7 01, 2016 12:00 pm
お住まい: Metz
お問い合わせ:

タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by Fabrice » 火 7 12, 2016 10:54 pm

TimeSheetスクリプト 概要

このスクリプトは下記の情報をTVPaintのプロジェクト上から取得して日本式のタイムシート画像(A3用紙想定サイズ)を作成するプログラムです。
・プロジェクト名
・プロジェクトの著者
・レイヤー名
・インスタンス名
・イメージマークの有無と種類
・各インスタンスのヘッドのタイミング
・各レイヤーの開始点/終了点とその処理方法
以上の情報を抽出してタイムシート画像に反映させます。
原画用・動画追記用・動画単独出力用の3種類のボタンがあり、多少動作が異なります。

上記の情報に関していくつかの注意事項があります。
・プロジェクト名からタイムシートのタイトル・カット番号欄に転記するルールは
 [タイトル]_[カット番号]_[それ以外の情報].tvpp
 のようになっています。「_」が識別用の記号になっている点に注意して下さい。
・レイヤー名はタイムシートの表記欄の都合で、英数字最初から2文字を反映させます。
 2バイト文字(日本語等)をレイヤー名に使った場合正しく反映されないので注意して下さい。
・インスタンス名は英数字・2バイト文字等に対応しています。
 スクリプトの仕様の問題で小数点のみ「_」に変換されます。
・タイムシートにインスタンス名が反映されるにはイメージマークが打たれている事が前提になります。
 イメージマークがないインスタンスのヘッドはすべて「空セル」として「×(バツ)」が打たれます。
・原画用のタイムシートではインスタンスの途中にイメージマークがあった場合、中割り記号「・」が入ります。
・動画用のタイムシートではイメージマーク01(赤)を原画(丸囲みの数字)、それ以外を動画(丸囲みがない数字)として表示します。
・各レイヤーの開始点/終了点の処理は「なし」「繰り返し」「往復繰り返し」「最後を維持」でそれぞれに対応した結果をシートに記入します。

レイヤー数が一定数を超えると、6秒タイムシートから3秒タイムシートに自動的に切り替わります。
3秒タイムシートでも収まらないレイヤー数になる場合は正常に機能しなくなりますのでご注意下さい。

フォントはスクリプトの初期値で日本語版Windowsの標準フォント「メイリオ」の指定になっています。
違う書体・サイズを使用したい場合はスクリプトのソースファイルからnumber_font number_sizeの記述箇所を探して書き換えてください。
例:
TVP_timesheet_about.jpg
使い方に関して、タイムシートの開発に大きく貢献したスタジオ Witstudioが説明ビデオを公開してくれました。


TVPaintが作った説明ビデオは以下のようになります: 
Timesheet Key

Timesheet Inbetweens

Timesheet Inbetweens (standalone)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2016年5月17日 アップデート:

「Animator Name」は左下の「プロジェクト」タブにある「著者」のフィールドに記入されている名前に従っている。

[振る舞いがタイムシート上に表示されている:
  • 「往復くり返し」=「RETURN」
  • 「くり返し」=「REPEAT」
  • 「なし」=X
  • 「最後を維持」=赤い線
読みやすさをアップするため、格6つ線に一つ線が太目にして、格24つ線に一つ線がさらに太目にした。(タイムシートは24fpsプロジェクトのみ対応です)

タイムシートのプロジェクト名は「OriginalProjectName_ts」です。そんため、「Inbetween」ボタンにクリックすると、「Timesheet」ではなく「OriginalProjectName_ts」という名前があるプロジェクトを調べるようにした。(プロジェクトが見つからない場合、ファイルリクエスターが開く)。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

2017年2月15日 アップデート:

スクリプトを改善しました。
スクリプトの概要(上記したもの)も更新致しました。

バッグございましたらぜひ報告して下さい。



Translation : :
The long-awaited timesheet is finally there !

What does it do ? It scans all of the visible layers in the current clip and stores the instances heads and image marks (and the instances names but it seems there is a little bug here).
When you load the panel, there are two buttons : "Sheet Key" and "Sheet Inbetweens". They were asked by a user in Japan. Their core functions are basically the same, but they do it differently. I will explain the differences later.
Let's concentrate on "Sheet Key"

So, let's show 2 examples.
Let's take this timeline :
timeline-normal.JPG
9 layers, 3 of them are visible, 184 images.
When clicking on "Sheet Key", the script will scan the layers, then draw a table. This will be the result :
keys.png
The script produces a new project named Timesheet with the following dimensions : 3748 x 1324 (A3)

What do we have ?
At the top :
  • A field named Title containing the project's name, and a field named Ep.no left blank (was requested by our Japanese user)
  • A field named Cut.no, containing the characters between the first "_" and second "_" characters in the project's name (was requested by our Japanese user)
  • A field named Duration, containing the duration, calculated like this : Integer division of total number of frames by the frame rate + the rest of the images.
  • A field named Animator name, filled with the Author's name.
  • A field named Page, indicating the current page of the Timesheet.
All of these information can be edited by modifying the DrawProjectInfos() function located in the sheet_key.grg file. (Important : if you don't have any experience with George scripting, or coding in general, it's not advised to modify the sheet_key.grg and sheet_inbetweens.grg files !)

The main part :
We have two identical tables, organized as follows:
  • In the first 7 columns, the name of the instances heads that have an image mark are circled in red. For now, it is only "0". Obivously, it's advised that the names of the instances should be numbers, and not words (otherwise it can't fit).
    The exposures are reprensented by a black line.
    Exposures having an image mark are reprensented by a black dot.
    The first two characters of the layer name are on top.
  • There is a column named Dialog where you can write informations about the dialog. The script does not fill this column.
  • The column at the right is used by the "Sheet Inbetween" script. I will come back later to this.
  • The last column, named Camera can be used to write informations about the camera. The script does not fill this column.
  • You can see a red line : it represents the Mark Out value.
Now, if you have more than 7 visible layers in your current clip, the script behaves differently.
Here is the result in that case :

(there are still 184 images)
  • 16 layers and 72 images can be displayed (instead of 7 layers and 144 images).
  • The Dialog column is near the Camera column.

Now, on to the "Inbetweens" part.
The goal of the Timesheet script is to compare the evolution between the moment when you draw the Key Animations, and the moment when you draw the Inbetweens. So, when you click on the Sheet Inbetween button, here's what will happen :
  • The script will look in the currently opened projects for a project named Timesheet (remember, it's the project created by the Sheet Key). If it is found, then it will scan the current visible layers for the instances heads and the image marks and switch to the Timesheet project, then fill the "Inbetweens" part of the Timesheet.
  • If the Timesheet project isn't loaded in TVPaint Animation, the script will warn you, and open a File Requester. You will need to look for the project in your computer, and the script will load it, and perform the same operations as described before.
Here's an example :


------------------------------------------------------------------------------------------------------------------------------------------------
Update, 17/05/2016 :

  • The "Animator Name" part is now filled with the project's author name (Project tab > Author)
  • Post-behavior is now reflected :
    • If it is "Ping-pong", then "RETURN" will be written at the end.
    • If "Loop", then "REPEAT".
    • If "None", there will be a red cross at the end.
    • If "Hold", then there will a red line.
  • The table is more 'readable' : each 6 lines, there is a thicker line, and each 24 lines an even more thicker one (the Timesheet is designed to work with projects that are on 24 frames per second).
  • The project created by the script is now named OriginalProjectName_ts. Hence, when using the Inbetweens button, the script will look for a project named OriginalProjectName_ts instead of just "Timesheet" (if such project isn't found, it still opens a File Requester)
  • All of the bugs mentionned before have been fixed, and the script should be faster than before.
------------------------------------------------------------------------------------------------------------------------------------------------
Update, 12/02/2017 :

Here is the last version.
We will detail the bug fixes later.

Have fun !
(and don't forget to report any bugs you will find !)
sheet_key.grg
sheet_inbetween.grg
Sheet_7-5.tvpx
添付ファイルを見るには登録またはログインが必要です
Fabrice Debarge

ini
記事: 4
登録日時: 土 11 26, 2016 6:42 pm

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by ini » 月 11 28, 2016 10:04 am

インスタンス名を1.5とか1.1とかにして実行したいんですが、
そうするとシートには1.500000とか1.100000とかに変換されます。
george scriptで小数点がある数字を変数に代入すると自動で変換されそうなるみたいです。
一応「,」を「.」としてつかったり、「.」を2つ入れたりする方法をつかってます。1.5.とか

ついでに他にも活用したいところがあっての質問なんですが
george scriptで小数点がある数字をそのまま変数に代入し、呼べる方法はあるでのでしょうか。
Translation : :
J'aimerai pouvoir renommer mes instances "1.5" ou "1.1" par exemple.
Lorsque je le fait actuellement cela donne "1.500000" ou "1.100000" dans la timesheet.
Il semblerait que lorsque que l'on ajoute des chiffres avec des décimales, le script george les convertissent ainsi automatiquement.
Je mets donc une virgule 「,」 à la place du point, et j'ajoute un deuxième point pour contourner le problème.

J'ai une question en rapport avec celle-ci :
Est-ce que l'on peut rentrer des chiffres avec des décimales dans le code de george et les "appeler" par la suite ?

アバター
Lise
Site Admin
記事: 291
登録日時: 金 7 08, 2016 8:22 am

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by Lise » 火 11 29, 2016 2:41 am

こんにちは、

質問ありがとうございます。
ini さんが書きました:インスタンス名を1.5とか1.1とかにして実行したいんですが、
そうするとシートには1.500000とか1.100000とかに変換されます。
george scriptで小数点がある数字を変数に代入すると自動で変換されそうなるみたいです。
一応「,」を「.」としてつかったり、「.」を2つ入れたりする方法をつかってます。1.5.とか
承知しました。方法があるかどうか調べてみます。
ini さんが書きました:ついでに他にも活用したいところがあっての質問なんですが
george scriptで小数点がある数字をそのまま変数に代入し、呼べる方法はあるでのでしょうか。
具体的に何をやりたいでしょうか。画像で説明をお願いができますでしょうか。
Translation : :
Merci pour votre question,

On va voir si c'est possible.

Est-ce que vous pourriez mettre des images pour que l'on comprenne bien ?
Lise Menzin (リーズ) TVPaint Team Member (東京駐在員事務所の担当者)

ini
記事: 4
登録日時: 土 11 26, 2016 6:42 pm

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by ini » 火 11 29, 2016 3:30 pm

お疲れ様です。ご返事ありがとうございます。
Spoiler : スクリプト :

コード: 全て選択


tv_layerinfo
PARSE result layerDisplay layerPosition layerOpacity layerName layerType firstImage lastImage layerPrelighttable layerPostlighttable layerSelection

tv_LayerGetImage
orgImg = result 

string= ""

tv_LayerCurrentID
curLid = result

tv_LayerGetImage
curImg = result 

i=firstImage

// print  firstImage lastImage 
tv_LayerImage firstImage
while (i <= lastimage)
tv_instancegetname curLid i
string = string "" result
tv_ExposureNext
tv_LayerGetImage
string = string ";" 
i = result 
end

tv_reqstring "Type the sheet|"string"" 
parse result stringtoDivided 
if cmp (result, "cancel")
EXIT
end
parse result stringtoDivided 


tv_LayerImage firstImage

for i = 1 to newiniParse("x",stringtoDivided,";")
// tv_LayerImage curImg
		
		
		tv_LayerGetImage
		curImg = result 
		
		tv_exposureinfo curImg
		parse result info a b
		
		tv_instancegetname CurLID CurImg
		nameofinstance = result
		// print nameofinstance info
		if cmp(info,"none")
		tv_LayerImage CurImg-1
		tv_LayerInsertImage 1
		tv_LayerImage CurImg
		end
		 tv_instancesetname CurLID CurImg array(i)
		// if cmp(info,"none")
	// tv_LayerInsertImage 1
		tv_ExposureNext
end

tv_LayerImage orgImg







	FUNCTION newiniParse(Array,string,divider)
	LOCAL pos i workstr size
	i = 0
	pos = 1
	workstr = string
			IF ((CMP(workstr,"") == 0) && (CMP(divider,"") == 0) && (CMP(workstr,divider) == 0))  // 문자열이 0(공백)과 다르고, 디바이더가 0(공백) 과 다르고 문자열이 공백과 다를때 실행한다.
					if (pos = Find(workstr,divider,1)) <= 0
					i = i+1
					Array[i] = workstr
					else
						WHILE ((pos = Find(workstr,divider,1)) > 0)
						// print "pos_" pos "Len_" LEN(workstr)
								IF ((pos != 1) && (pos != LEN(workstr)))		//디바이더가 첫번째가 아니면서, 디바이더가 문자열길이와같지 않을때
								i = i+1
								Array[i] = CUT(workstr,1,pos-1)
								workstr = CUT(workstr,pos+1,LEN(workstr))
								//print workstr
								ELSE															//디바이더가 첫번째이거나  디바이더가 문자열길이와같지 않을때
										IF (pos == 1)			//디바이더가 첫번째
											IF (pos != LEN(workstr))		//디바이더가 첫번째,디바이더가 문자열길이와같지 않을때
												i=i+1
													Array[i] = ""
												workstr = CUT(workstr,pos+1,LEN(workstr))
											ELSE 									//디바이더가 첫번째면서디바이더와 문자열길이가 같을때
												i=i+1
												Array[i] = ""
												workstr = ""
											END
										ELSE					//디바이더가 첫번째가 아니면서 문자열길이와 같을 때
											IF ((pos != 1) && (pos == LEN(workstr)))
												i=i+1
												Array[i] = CUT(workstr,1,pos-1)
												workstr =""
											end
										END
								END
						end
						IF (CMP(workstr,"") == 0)
						i = i+1
						Array[i] = workstr
						end
					END
						

				Array[i+1]= "EOS"

			END
		RETURN i
	END

//============================================
//{{{ 3.Find
//------------------------------------------
//
//	Find
//
//	Function: find a character into a string
//            from a specified start position
//
//	Call: Find(string,car,start)
//
//	Arguments:
//		string = characters string
//		car    = character to look for
//		start  = start position in string
//
//	Return: position of character
//			0 if character does not exist
//			into string
//			-1 if invalid position
//			(negative, null or higher
//			 than string length)
//
//------------------------------------------
//}}}

FUNCTION Find(string,car,start)
	LOCAL i size
	i = start
	size = LEN(string)
		IF ((start <= 0) || (start > size) || (CMP(car,"") == 1))
		RETURN -1
	END
	DO
		IF (CMP(CHAR(string,i),car) == 1)
			RETURN i
		END
	UNTIL ((i=i+1) > size)
	RETURN 0
END
あまりこういうこと作るのに慣れてませんので雑ですが、
実行すると画像みたくなるスクリプトです。

;があるたびに打った文字列を分け、インスタンスに順番どおり名ずけてくれます。
インスタンスが入力した名前の数に足りてないと自動で作ってくれます。
Spoiler : 以下説明 :
1;2;3;4;5;6;7;8;9;
sh00001.jpg
sh00002.jpg
1;ア;イ;ア;イ;ア;ウ;ア;エ;オ;2;3;1;6;7
sh00004.jpg
sh00005.jpg
仮に;;;を入力するとインスタンス3つの名を” ”にします。(インスタンス基本の空の名前)
sh00010.jpg
sh00011.jpg
インスタンスへ名前がついてインスタンスが3つの場合
1 5 10
sh00006.jpg
sh00007.jpg
実行すると基本的に1;5;10;で入力されたウィンドウがひらかれます。
sh00008.jpg
で、そこを1;2;3;4;5;6;7;8;9;を入力すると、6つのインスタンスを生成し、123456789のなまえをつけてくれます。
sh00009.jpg
というスクリプトです。


この中に1.1とかを入れたいけと変数に代入された瞬間1.100000へとかわってしまいまして
結局同じところかなと思い、他に方法がないかなと思いましての質問でした。

よろしくお願いします。
========================================================

Translation : :
Bonjour. Merci pour votre réponse.
Code :

コード: 全て選択


tv_layerinfo
PARSE result layerDisplay layerPosition layerOpacity layerName layerType firstImage lastImage layerPrelighttable layerPostlighttable layerSelection

tv_LayerGetImage
orgImg = result 

string= ""

tv_LayerCurrentID
curLid = result

tv_LayerGetImage
curImg = result 

i=firstImage

// print  firstImage lastImage 
tv_LayerImage firstImage
while (i <= lastimage)
tv_instancegetname curLid i
string = string "" result
tv_ExposureNext
tv_LayerGetImage
string = string ";" 
i = result 
end

tv_reqstring "Type the sheet|"string"" 
parse result stringtoDivided 
if cmp (result, "cancel")
EXIT
end
parse result stringtoDivided 


tv_LayerImage firstImage

for i = 1 to newiniParse("x",stringtoDivided,";")
// tv_LayerImage curImg
		
		
		tv_LayerGetImage
		curImg = result 
		
		tv_exposureinfo curImg
		parse result info a b
		
		tv_instancegetname CurLID CurImg
		nameofinstance = result
		// print nameofinstance info
		if cmp(info,"none")
		tv_LayerImage CurImg-1
		tv_LayerInsertImage 1
		tv_LayerImage CurImg
		end
		 tv_instancesetname CurLID CurImg array(i)
		// if cmp(info,"none")
	// tv_LayerInsertImage 1
		tv_ExposureNext
end

tv_LayerImage orgImg







	FUNCTION newiniParse(Array,string,divider)
	LOCAL pos i workstr size
	i = 0
	pos = 1
	workstr = string
			IF ((CMP(workstr,"") == 0) && (CMP(divider,"") == 0) && (CMP(workstr,divider) == 0))  // 문자열이 0(공백)과 다르고, 디바이더가 0(공백) 과 다르고 문자열이 공백과 다를때 실행한다.
					if (pos = Find(workstr,divider,1)) <= 0
					i = i+1
					Array[i] = workstr
					else
						WHILE ((pos = Find(workstr,divider,1)) > 0)
						// print "pos_" pos "Len_" LEN(workstr)
								IF ((pos != 1) && (pos != LEN(workstr)))		//디바이더가 첫번째가 아니면서, 디바이더가 문자열길이와같지 않을때
								i = i+1
								Array[i] = CUT(workstr,1,pos-1)
								workstr = CUT(workstr,pos+1,LEN(workstr))
								//print workstr
								ELSE															//디바이더가 첫번째이거나  디바이더가 문자열길이와같지 않을때
										IF (pos == 1)			//디바이더가 첫번째
											IF (pos != LEN(workstr))		//디바이더가 첫번째,디바이더가 문자열길이와같지 않을때
												i=i+1
													Array[i] = ""
												workstr = CUT(workstr,pos+1,LEN(workstr))
											ELSE 									//디바이더가 첫번째면서디바이더와 문자열길이가 같을때
												i=i+1
												Array[i] = ""
												workstr = ""
											END
										ELSE					//디바이더가 첫번째가 아니면서 문자열길이와 같을 때
											IF ((pos != 1) && (pos == LEN(workstr)))
												i=i+1
												Array[i] = CUT(workstr,1,pos-1)
												workstr =""
											end
										END
								END
						end
						IF (CMP(workstr,"") == 0)
						i = i+1
						Array[i] = workstr
						end
					END
						

				Array[i+1]= "EOS"

			END
		RETURN i
	END

//============================================
//{{{ 3.Find
//------------------------------------------
//
//	Find
//
//	Function: find a character into a string
//            from a specified start position
//
//	Call: Find(string,car,start)
//
//	Arguments:
//		string = characters string
//		car    = character to look for
//		start  = start position in string
//
//	Return: position of character
//			0 if character does not exist
//			into string
//			-1 if invalid position
//			(negative, null or higher
//			 than string length)
//
//------------------------------------------
//}}}

FUNCTION Find(string,car,start)
	LOCAL i size
	i = start
	size = LEN(string)
		IF ((start <= 0) || (start > size) || (CMP(car,"") == 1))
		RETURN -1
	END
	DO
		IF (CMP(CHAR(string,i),car) == 1)
			RETURN i
		END
	UNTIL ((i=i+1) > size)
	RETURN 0
END

Je n’ai pas l’habitude de faire ce genre de chose donc ce n’est pas très abouti. Il s’agit d’un script qui génère des instances.
On entre le nom des instances que l’on sépare avec un point virgule « ; » dans le champ qui s’affiche et cela renomme les instances automatiquement et créé le nombre d’instance correspondant.

1;2;3;4;5;6;7;8;9;
sh00001.jpg
sh00002.jpg
1;ア;イ;ア;イ;ア;ウ;ア;エ;オ;2;3;1;6;7
sh00004.jpg
sh00005.jpg
Lorsque je tape seulement 3 points virgules ";;;" , cela créé des instances sans les renommer. (elles conservent leur nom par défaut)
sh00010.jpg
sh00011.jpg
Voici un exemple où il y a 3 instances déjà nommées
1 5 10
sh00006.jpg
sh00007.jpg
Lorsqu’on lance le script, le champ s’affiche avec le nom des instances
sh00008.jpg
Et si j’entre les valeurs "1;2;3;4;5;6;7;8;9;" cela va renommer les instances précédentes tout en ajoutant de nouvelles instances.
sh00009.jpg
J’aimerais pouvoir les renommer avec des décimales, 1.1 par exemple, mais actuellement lorsque que je le fais, cela me donne 1.10000. Donc j’aurais voulu savoir si vous aviez une solution.
Merci d’avance.
添付ファイルを見るには登録またはログインが必要です
最後に編集したユーザー ini [ 水 11 30, 2016 5:38 pm ], 累計 4 回

アバター
Lise
Site Admin
記事: 291
登録日時: 金 7 08, 2016 8:22 am

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by Lise » 水 11 30, 2016 6:10 am

お世話になっております。

分かりやすい説明ありがとうございました。大変助かります。
非常に便利なスクリプトですね。素晴らしいです。

ご要望に関して、調べてきます。少しい時間をいただけませんでしょうか。

よろしくお願いいたします。
Translation : :
Merci pour vos explications, c'est très clair.
C'est un script très pratique, c'est super.
On va voir ce que l'on peut faire. Cela peut prendre un peu de temps.
Lise Menzin (リーズ) TVPaint Team Member (東京駐在員事務所の担当者)

アバター
Lise
Site Admin
記事: 291
登録日時: 金 7 08, 2016 8:22 am

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by Lise » 水 11 30, 2016 9:30 am

失礼します。

開発者に聞きましたがgeorge はどうしても小数点がある数字を対することができかねます。

それはなぜかというと、基本的にgeorge は極めて古いコードですので、20年前のコードが今までの11バージョンにも残っています。もし元のコードにバグが残されたら非常に修正しにくいということになります。恐れ入りますが、今回の問題はその「修正ができないコード」の一つです。TVPaint側にも以前修正しようとやってみましたが、そのコードの修正が他のところに割りに大きく影響を与えてしまうということになりましたので修正されませんでした。

対応ができなくて大変申し訳ございませんでした。
Translation : :
J'ai demandé au développeur et en fait, george ne peut pas gérer les décimales.
Cela est dû au fait que george est un code assez ancien et il reste encore des parties très anciennes de ce code dans la version actuelle. S'il y a un bug dans un code aussi vieux cela devient difficile à corriger car cela affecte grandement d'autres parties du code plus récent. On avait essayé de corriger ce problème mais cela s'est avéré trop difficile.
Désolés de ne pas pouvoir vous aider cette fois.
Lise Menzin (リーズ) TVPaint Team Member (東京駐在員事務所の担当者)

高木宏紀
記事: 322
登録日時: 木 7 28, 2016 3:41 am

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by 高木宏紀 » 水 11 30, 2016 11:07 am

開発協力者のWIT STUDIO 高木です。
TimeSheet7.6の改良版、TimeSheet8を現在TVPaint社さんと開発のやり取りをしている最中ですが、
インスタンス名を付けていく作業に関しては現状改良を進めておらず、下記を想定していました。

・デフォルトの「1.」「2.」…はインスタンス名として機能しないので、インスタンスのヘッドに1から自動で番号を振っていく
 スクリプト「RenameInstances」を開発(対応済)
・日本のアニメーションに良くある「同じ絵の繰り返し利用」に関しては
 「先に番号を打ってHandy Custum Panelの『同じインスタンス名に画像を適用』を使い、
 RenameInstancesでは『既に番号が打たれている場合回避するようにする』仕組みにする」(これも対応済)

「繰り返しがある場合、ある程度インスタンス名を手動で打つ作業が必要になる」ので、私としてはキーボードをお使いの方であれば
ショートカットの「\」キーに「レイヤー:インスタンス名を変更」を割り当てする事を推奨しています。
(上述のYoutube動画をご参考下さい)

繰り返しの顕著な例が、日本のアニメーションにありがちな「1・3・2・1・3・1・2・1」のような3枚の動画をある程度規則は持ちつつランダムに変化させて
セリフを表現するケースがあると思いますが、iniさんの自動処理は、確かにこのようなケースでは有効だと思いました。
「RenameInstances」のコードがおそらくiniさんが求められる内容をある程度カバーできるかと思うので、リーズさんかティエリーさんの方で
「RenameInstances 1.5」のスクリプトパネルとソースコードを、こちらにUpしていただけますでしょうか。

また、これは改めて言う事ではないかもしれませんが、PCを使う上での「作法」の話で「PCを使う上で機械だけが使ってよい記号」というのが
いくつかありまして、「*」「.」「#」「"」といったものに関しては特にシステムに影響を与えかねない記号の為「ご法度」とされています。
ですのでアニメーターの方が「1.5」や「2.1」などの番号を使いたくなる気持ちもわかるのですが、安全に使える記号「_」を用いて「1_5」などの
表記をされる事をお勧めします。
PCを使う業務が初めての経験になるアニメーターの方の中には、こういった基礎を知る機会がないまま触り始めている方も多くおられるのと、
この10~20年のOS側の進化で「ご法度」に関してもある程度回避できるような仕組みが作られてきている現実もあるので、この辺りはサポートを
主業務にしている我々も、注意喚起せねばと思いつつ「でも問題なく動くのですが」と言われる可能性もありつつで、少し悩んでいる所ではあります。

以上、長くなってしまいましたが、よろしくお願いします。
Translation : :
Bonjour c’est Takagi de Wit Studio.

J’ai apporté mon aide pour le script de la Timesheet 7.6 et je m’occupe actuellement d’améliorer la prochaine version, TimeSheet8. J’ai aussi donné des conseils pour l’amélioration du renommage des instances en tenant compte des limites du logiciel :
-le développement du script 「RenameInstances」qui renomme les têtes d’instances à partir de 1 car les instances ne sont pas nommées par défaut dans le logiciel (「1.」「2.」)
-avec le même script, faire en sorte que les instances déjà nommées ne soient pas renommées dans le cas très fréquent où les instances soient ré-utilisées (copiées).

Lorsqu’il y a répétition, il est parfois nécessaire de taper le nom de l’instance à la main donc je suggère d’attribuer un raccourci pour renommer l’instance (à la touche 「/」par exemple).
(vous pouvez vous référez à la vidéo au dessus)

C’est un exemple assez courant mais, dans l’animation japonaise au retrouve souvent 3 dessins placés dans cette ordre 「1・3・2・1・3・1・2・1」et interchangeables pour faire les mouvements de la bouche. Je pense que le script que vous avez écrit est utile dans ce cas-là.
Je pense que le code de 「RenameInstances」peut vous être utile donc si Lise ou Thierry, pourraient poster le script 「RenameInstances 1.5 」avec le code ?

Ensuite, ce n’est pas mon rôle mais, mais il existe de symboles qui sont réservés pour la programmation, tels que「*」「.」「#」「"」et qui influencent d’autres processus. C’est une sorte de règle.
Je comprends qu’en tant qu’animateur, vous ayez envie de mettre des points,「1.5」ou「2.1, mais il serait bien d’utiliser l’under barre, 「_」, qui passe sans problème.
Cela fait partie des règles qui s’appliquent à l’évolution des systèmes d’exploitation des 10-20 dernières années et qu’il est bon de rappeler de temps en temps en échangeant sur le sujet.

ini
記事: 4
登録日時: 土 11 26, 2016 6:42 pm

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by ini » 水 11 30, 2016 4:03 pm

ご返事ありがとうございました。 お疲れ様です。
理解しました。 :D


高木さん。お疲れ様です。
お勧めのお言葉ありがとうございます!
Spoiler : 蛇足 :
流石にあのスクリプトで全部打つのは長いので、
(*もともとは連番ファイルをインポートしたあと上のように打つと、レイヤーをコーピーし、そのレイヤーに打ったシートで整列、同名じインスタンス経全コーピーし元のレイヤ削除の機能のつくるために作ったものでした。)
自分も自分なりに「RenameInstances」みたいなスクリプトを作って2つを混じって活用していました。
ただ少し違いがありますね。

・基本、名前は全部変える。(すでに名前がついているとしても)
・同じ名前がついてるインスタンスは同じ名前になる。
a 2. b 4. 5. b 7. 8. a -->1 2 3 4 5 3 6 7 1
1 2. 3. 4. 5. 1 7. 8. 1 -->1 2 3 4 5 1 6 7 1
2 2. 2 4. 2 6. 7. 8. 2-->1 2 1 3 1 4 5 6 1
・2番めのイメージマークがついているインスタンスの場合、例外として名前を変更しない。
(ここはその場合、動画参考としての名前を手動でつけ「アイウエオ」、シートスクリプトで三角をつけて書くようにいじりました。)
つくる途中、口パクの場合 23123232312323とか、2で始まると実行すると 2が1になるのにき気ずき、そこらへん
既に打たれている番号を除いて番号をふるのを考えたらもうめんどいなと思い、一応このままでつかってますが、、、
・RenameInstancesでの『既に番号が打たれている場合回避するようにする』仕組みにする」
とおっしゃると、「既に打たれている番号を除いて番号をふる。」ということでしょうか、
あるいは「そのインスタンスの名だけを変更しない。」とのことでしょうか。
例えば、1.1 3.4.5.6.7.8.9.の場合、(二つ目のインスタンスだけ「1」の名前がついている。)



1 1 2 3 4 5 6 7 8 になのるか、2 1 3 4 5 6 7 8 9 になるのかが気になるところですね。
Spoiler : 蛇足 :
出来れば手動でいちいち打つの最大限へらしたいですね、、、
Translation : :
Merci pour votre réponse, je comprends.

Cher Takagi, merci pour votre compliment !
Spoiler : Info supplémentaire :
C’est vrai que c’est long de tout taper à la main
(*もともとは連番ファイルをインポートしたあと上のように打つと、レイヤーをコーピーし、そのレイヤーに打ったシートで整列、同名じインスタンス経全コーピーし元のレイヤ削除の機能のつくるために作ったものでした。)
Je ne vois absolument pas ce qu'il a voulut dire donc après mettre torturé l'esprit pendant une demi-heure sur le sens, je jette l'éponge. En gros, il explique comme il importe ses fichiers, ré-organise ses calques et renomme ses instances.
C’est comme une sorte de 「RenameInstances」mais avec mes propres ajouts. Il y a quelques petites différences.?
  • A la base, tous les noms des instances sont modifiés (même si le nom est le même qu’avant)
  • Les instances déjà nommées seront renommées avec un nom identique
    a 2. b 4. 5. b 7. 8. a -->1 2 3 4 5 3 6 7 1
    1 2. 3. 4. 5. 1 7. 8. 1 -->1 2 3 4 5 1 6 7 1
    2 2. 2 4. 2 6. 7. 8. 2-->1 2 1 3 1 4 5 6 1
  • Lorsqu’il s’agit d’une image avec une marque d’image, exceptionnellement, cela ne change pas le nom. (dans ce cas, je renomme à la main avec les lettres 「アイウエオ」 ou j’ajoute un symbole triangle avec un autre script )
    Si je décide renommer mes instances en cours de route, par exemple dans le cas des mouvements de bouche « 23123232312323 » et si je commence par 2, le 2 devient 1. Dans ce cas-là, j’évite de taper des chiffres qui existent déjà, c’est un peu fastidieux mais c’est comme ça…
Vous avez dit que Rename instances « fait en sorte d’éviter les instances déjà renommées » cela signifie que «cela renomme les instances déjà nommées avec le même nom » ou « cela ne change pas le nom des instances déjà nommées » ?
Par exemple : 1.1 3.4.5.6.7.8.9. (seule la deuxième instance est nommée « 1 »)
cela donne 1 1 2 3 4 5 6 7 8 ou 2 1 3 4 5 6 7 8 9 ?
Spoiler : Info supplémentaire :
Si c’est possible de diminuer petit à petit le fait d'avoir à taper les noms à la main.

高木宏紀
記事: 322
登録日時: 木 7 28, 2016 3:41 am

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by 高木宏紀 » 木 12 01, 2016 2:53 am

iniさん、返信ありがとうございます。

RenameInstncesの仕様上は
1.1 3.4.5.6.7.8.9.となっていた場合「1」を回避して飛ばすというオーダーで
2 1 3 4 5 6 7 8 9
になるはず、だったのですが今試したら全部1になってしまいました…
このスクリプトを作った時の想定としては、レイヤーを作っている途中でも最後でも使えるようにする事を目指していました。
(そのためタイムシートとは別スクリプトになっています)
普通に1.2.3.4.5.6.となっていても全部1になってしまうバグを見つけてしまった体なので、
週末に条件を調べてみて開発側に報告したいと思います。

***
・RenameInstancesでの『既に番号が打たれている場合回避するようにする』仕組みにする」
とおっしゃると、「既に打たれている番号を除いて番号をふる。」ということでしょうか、
あるいは「そのインスタンスの名だけを変更しない。」とのことでしょうか。
例えば、1.1 3.4.5.6.7.8.9.の場合、(二つ目のインスタンスだけ「1」の名前がついている。)
1 1 2 3 4 5 6 7 8 になのるか、2 1 3 4 5 6 7 8 9 になるのかが気になるところですね。
***
Translation : :
Cher ini, merci pour votre réponse.

Avec le script RenameInstances,
Si l’on indique d’éviter de renommer les instances comportant le chiffre 1 dans le cas suivant : 1.1 3.4.5.6.7.8.9. cela devrait donner : 2 1 3 4 5 6 7 8 9 mais lorsque j’ai essayé cela ne donne que des 1…J’ai toujours pensé que ce script pouvait être utilisé pour numéroter toutes les images du claques à la fin ou en cours de processus.
(c’est pour cela que celui de la timesheet est à part)
Normalement cela aurait dû donner 1.2.3.4.5.6. mais cela n’a mis que des 1 partout donc je vais chercher ce week end pourquoi cela fait ça et le signaler.
***
・RenameInstancesでの『既に番号が打たれている場合回避するようにする』仕組みにする」
とおっしゃると、「既に打たれている番号を除いて番号をふる。」ということでしょうか、
あるいは「そのインスタンスの名だけを変更しない。」とのことでしょうか。
例えば、1.1 3.4.5.6.7.8.9.の場合、(二つ目のインスタンスだけ「1」の名前がついている。)
1 1 2 3 4 5 6 7 8 になのるか、2 1 3 4 5 6 7 8 9 になるのかが気になるところですね。
***

アバター
Thierry
Site Admin
記事: 125
登録日時: 木 7 07, 2016 12:39 pm

Re: タイムシートーTimeSheet - ExposureSheet - XSheet

投稿記事 by Thierry » 木 12 01, 2016 8:54 am

高木宏紀 さんが書きました:繰り返しの顕著な例が、日本のアニメーションにありがちな「1・3・2・1・3・1・2・1」のような3枚の動画をある程度規則は持ちつつランダムに変化させて
セリフを表現するケースがあると思いますが、iniさんの自動処理は、確かにこのようなケースでは有効だと思いました。
「RenameInstances」のコードがおそらくiniさんが求められる内容をある程度カバーできるかと思うので、リーズさんかティエリーさんの方で
「RenameInstances 1.5」のスクリプトパネルとソースコードを、こちらにUpしていただけますでしょうか。
かしこまりました。Rename Instances 1.5のスクリプトを今週中投稿しておきます。
Translation : :
Je posterais le script Rename Instances 1.5 sur ce forum dans la semaine.

ポストに返信