1

SceneKitで拡大縮小アニメーションの円を描きたいです。円は、半径を 1 秒で (おそらく) 100 から 200 に変更します。幅(ランダム値)5の円の輪郭だけが見えます。

SCNShape と UIBezierPath で円を描きます。円をスケーリングしても、アウトラインの幅も変化するため、役に立ちません。フレームごとに SCNNode の SCNGeometry プロパティを変更すると、非常にコストがかかり、CPU 使用率が 100% になるため、これも実際には機能しません。

最善の方法が何であるかを知っている人はいますか?

4

2 に答える 2

3

ここにはたくさんのオプションがあります。いくつかをテストしてプロファイリングし、必要な視覚効果とパフォーマンスの間で最適なトレードオフが得られるものを確認してください。

1. パーティクル システムを使用する

毎秒数百の円を描画することは、特に配置が特定のパターンに従っている場合、パーティクル システムのように聞こえます。を円のビットマップに設定しparticleImage(スケーリング時にピクセレーションが発生しないように十分に高い解像度で)、プロパティ コントローラーを使用してサイズをアニメートします。

2.BYO粒子システム

SCNParticleSystem法案に合わない場合は、大まかにそれが行うことを行うことができます — ビルボードのスプライトを描画し、それらのサイズを調整します. を使用しSCNLookAtConstraintて平面をビューアーの方に向け、その上に円のテクスチャをマップしscale、含まれているノードの をアニメートします。

3. パラメトリック ジオメトリを使用する

orを作成しSCNCylinderSCNSphere円形の断面がカメラの方向を向くように変形します。(問題がある場合は、他の次元で平らにします。) 大きくするには、ノードの をアニメートしますscale

アウトラインのみを表示するには、シェーダー修飾子を使用します。シェーダー コードでアウトライン効果を得る良い方法は、ビュー方向とサーフェス法線の内積をテストし、それらがほぼ垂直である場合にのみアウトライン カラーを描画することです。

于 2015-04-06T19:23:45.787 に答える