質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

1回答

5416閲覧

Blenderからfbx形式でexportしたアニメーションをUnityに取り込んだときにfpsが合わない

quatsch273

総合スコア8

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

0グッド

0クリップ

投稿2017/02/20 02:29

Blenderで出力したfbxファイルをUnityで取り込んでアニメーションとして登録、まではいいのですが…
Updateのタイミングでフレーム数を数えてみるとどうも合わないんです。
想定よりアニメーションにかかる時間が短いです。
Blender側のfps設定は60にしています。
Unityのフレームレートは60だと聞きましたが、異なるケースがあるのでしょうか?
それともBlender側でなにか設定が必要になるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Unityのフレームレートは60だと聞きました

どこで聞いたのでしょうか、これは間違いです。

何も設定しない場合、動作プラットフォームがパソコンなら「出来るだけ高い数値」になります。
(=環境や状況によって120fpsかもしれないし80fpsかもしれないし24fpsかもしれない)
スマホの場合、「最高30fps」となります。

Application.targetFrameRateを使用すると、「指定した値を最高値とする」ようになります。
Application.targetFrameRate = 60;としたら、「最高60fps」となります。

なお、あくまで最高値なので、負荷が掛かるとその分fps値は落ちます。
(60fpsと指定していても20fpsになってしまう場合があります)

投稿2017/02/20 08:38

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quatsch273

2017/02/20 14:52

ありがとうございます。 確かに何も設定しないと200fpsあたりをふらふらしていました。 設定してみましたところ、fpsの値は大体設定した値になるようになりました。 ですが、アニメーションのフレームと、Unityでの1フレームが同じになりません。 30フレームのアニメーションを登録したとして、Unity上で再生すると25フレームくらいで最後まで到達してしまい、5フレームほどは最後のポーズのまま硬直してしまいます。 (30フレーム目がきたら別のアニメーションに遷移するようにしています。) これはフレームレートの設定とはまた別の問題なのでしょうか。 設定できる箇所があるのでしたらご教示いただきたいです。
sakura_hana

2017/02/21 01:54

> 30フレーム目がきたら別のアニメーションに遷移するようにしています これをどのように設定しているのかによります。 AnimationClipにイベントを設定しているのか、Animatorを利用しているのか、単に経過時間を数えているのか(その場合時間をどう測っているのか)など。 設定方法によっては「アニメーションの30フレーム目には来ているが、Unityのカウントではまだ25フレーム目である」のような現象も起こります。 各インポート設定・コンポーネント設定・スクリプトを細かく正確に書いてもらえると回答しやすいです。
quatsch273

2017/02/21 14:12 編集

public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { flame = 0; } public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { flame++; } といった形で、Animatorから呼び出しているStateMachineBehaviourでフレーム数をカウントしています。 Blender側のエクスポート設定は60fpsにしていて、アニメーションの設定は初期設定のままで開始終了フレームの設定だけ変更してます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問