終了

エクスプレッションのエラーについて

New Here ,
Apr 09, 2024 Apr 09, 2024

リンクをクリップボードにコピー

コピー完了

テキストが頭から順に交互に上下から出現するエクスプレッションを記述したのですが、[位置]の2行目で「結果を数値に変換できませんでした」とエラーが出てしまいます。

色々調べたのですが解決しないため原因が分かる方がいらっしゃいましたらご教示いただけますと幸いです。


[量]

if((textIndex%2)==0){

selectorValue;

}else{

-selectorValue;

}


[位置]

t = time - inPoint + textIndex * 0.1;
y = easeOut(t, 0, 0.5, 100, 0);

[0, y]

キーワード
エクスプレッション

表示

294

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Apr 14, 2024 Apr 14, 2024

Easeを使うと設定はできませんが、数式で記述すれば色々な曲線を描くことができるので、希望した動きに近づけることができます。


中学校で習う二次方程式を使えば、3点を通る曲線が描けるので試してみましたが、緩急がきつい場合は、緩いところで曲線が膨らんで反対方向にはみ出してしまうため、不可でした。

ae101.jpg


Expressionのプリセットにある 関数 Math.Pow()を使用した計算式が近い動きになると思います。


1番目のモーション:

 

 

//1番目
let t = time-inPoint;
let amp = 100;
let f = 0.5; // デュレーション
let e = linear(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,0,1);
let up = amp*Math.pow( 2, -5 * e);
let down = -amp*Math.pow(2, -5 * e);
if(textIndex % 2 == 0){
up;
}else{
down;
}

 

 


2番目のモーション:

 

 

//2番目
let
...

投票

翻訳

翻訳
Community Expert ,
Apr 09, 2024 Apr 09, 2024

リンクをクリップボードにコピー

コピー完了

量のコードは、
let t = time-inPoint;
let f = 0.5; // デュレーション
let up = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,100,0);
let down = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,-100,0);
if(textIndex % 2 == 0){
up;
}else{
down;
}
 
位置のエクスプレッションは削除して値を0,100にして下さい。
これでどうでしょうか。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Apr 09, 2024 Apr 09, 2024

リンクをクリップボードにコピー

コピー完了

頂いたエクスプレッションで正常に動作しました、ありがとうございます。

追加の質問になってしまうのですが、もう少し動きにメリハリをつけることは可能なのでしょうか?理想としては動画の2つ目のようなアニメーションになります。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 10, 2024 Apr 10, 2024

リンクをクリップボードにコピー

コピー完了

参考動画の設定がわからないので、同じ動きにするのは難しいのですが、
「位置」の値やデュレーション、Linear・EaseIn・EaseOutの設定により動きは変わってきます。

1文字目の位置が他の文字より出現位置が中央寄りなので、下記のコードを作成してみました。
また、デュレーションは、0.3~0.4秒の間になっています。

let t = time-inPoint;
let f = 0.348;	// デュレーション
let s =  10	// 1文字目の位置調整
let ups = easeOut(t,(textIndex-1)/textTotal*f-1/s,textIndex/textTotal*f,100,0);
let downs = easeOut(t,(textIndex-1)/textTotal*f-1/s,textIndex/textTotal*f,-100,0);
let up = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,100,0);
let down = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,-100,0);
if(textIndex == 1){
	downs;
}else if(textIndex % 2 == 1 && !(textIndex ==1)){
	down;
}else{
	up;
}

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 10, 2024 Apr 10, 2024

リンクをクリップボードにコピー

コピー完了

<追記>
参考動画のアニメーションは、おそらくキーフレームで作成されています。
文字を分解して、速度グラフで下図の状態にすれば、動きがピッタリ合います。
エクスプレッションのEaseOutは、初期設定の値となるため急な変化にはできません。

ae101.jpg

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Apr 10, 2024 Apr 10, 2024

リンクをクリップボードにコピー

コピー完了

ありがとうございます。また、設定の共有まで気が回らず失礼いたしました。

 

仰る通り動画のアニメーションはキーフレームで作成したものになります。

テキストを分解せずアニメーターで同じ動きをつけたいと思ったのですが、緩急あるアニメーションは再現出来ないのですね。

勉強になりました、ご回答いただきありがとうございます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 14, 2024 Apr 14, 2024

リンクをクリップボードにコピー

コピー完了

Easeを使うと設定はできませんが、数式で記述すれば色々な曲線を描くことができるので、希望した動きに近づけることができます。


中学校で習う二次方程式を使えば、3点を通る曲線が描けるので試してみましたが、緩急がきつい場合は、緩いところで曲線が膨らんで反対方向にはみ出してしまうため、不可でした。

ae101.jpg


Expressionのプリセットにある 関数 Math.Pow()を使用した計算式が近い動きになると思います。


1番目のモーション:

 

 

//1番目
let t = time-inPoint;
let amp = 100;
let f = 0.5; // デュレーション
let e = linear(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,0,1);
let up = amp*Math.pow( 2, -5 * e);
let down = -amp*Math.pow(2, -5 * e);
if(textIndex % 2 == 0){
up;
}else{
down;
}

 

 


2番目のモーション:

 

 

//2番目
let t = time-inPoint;
let amp = 100;
let f = 0.4; // デュレーション
let e = linear(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,0,1);
let up = amp*Math.pow( 2, -10 * e);
let down = -amp*Math.pow(2, -10 * e);
if(textIndex % 2 == 0){
up;
}else{
down;
}

 

 

 

 

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

最新

追加のご回答に対する返信が遅くなってしまい失礼いたしました。

エクスプレッションで曲線を書くことも出来るのですね。
頂いた 関数 Math.Pow()を使用した式を試してみたところかなりイメージに近い動きになりましたので参考にさせていただきます。ありがとうございます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines