問題タブ [scenekit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - SceneKit を使用して 2 点間に線を引く
タイプ SCNVector3 の 2 つのポイント (pointA と pointB と呼びましょう) があります。私はそれらの間に線を引きたい。簡単なように思えますが、それを行う方法が見つかりません。
2 つのオプションが表示されますが、どちらにも問題があります。
半径が非常に小さく、長さが |pointA-pointB| の SCNCylinder を使用します。配置/回転します。
カスタム SCNGeometry を使用しますが、方法がわかりません。おそらく非常に薄い長方形を形成するには、2 つの三角形を定義する必要がありますか?
これを行う簡単な方法があるはずですが、見つけられないようです。
編集:三角形の方法を使用すると、(0,0,0) と (10,10,10) の間に線を引くために次のようになります。
しかし、問題があります。法線が原因で、この線は片側からしか見えません! 向こうからは見えません。また、「デルタ」が小さすぎると、線がまったく見えなくなります。そのままでは、技術的には、目的の線ではなく長方形であり、複数の結合された線を描画したい場合、小さなグラフィックの不具合が発生する可能性があります.
objective-c - SceneKit の正投影カメラとズーム コントロール
でカメラを使用する場合myCameraNode.camera.usesOrthographicProjection = YES;
、 で指定されたデフォルトのコントロールを使用して通常のようにズームできないと私が知る限り、私が知ることができるズームmyScene.allowsCameraControl = YES;
する唯一の方法は、変更することですmyCameraNode.scale = (SCNVector3*)...
回転/移動用の標準カメラ コントロールを保持しながら、スクロール ホイールをこのスケール パラメータに何らかの方法でバインドする方法はありますか? または、デフォルトのカメラコントロールを「修正」するには?
編集: カメラの仕組みを誤解していると思います。2 本指のズーム ジェスチャは、正射投影でも機能しますが、ズーム アウトするだけで、それ以上ズームインすることはできないようです。に関連している可能性がありますがmyCameraNode.scale
、そのパラメーターを設定しないと、シーン内のオブジェクトが巨大になり、そのごく一部しか表示されません (オブジェクトが大きくなるほど、scale
オブジェクトは小さくなります)。
scenekit - SCNView のスクリーンショットを作成できません
SCNView のスクリーンショットを取得することは可能ですか? 以下のコードで試していますが、常に白くなります...
ビューが標準の NSView の場合は正常に動作します...
macos - Scene Kit - オブジェクトのドラッグ
Scene Kit を使用して、マウス/トラックパッドでチェスの駒をドラッグしようとしています。すべてのオブジェクト (ボードと駒) はルート ノードの子であり、Collada ファイルからロードされます。
Stack Overflow の他の場所で、プロセスの役立つ説明を見つけました。その説明を使用して、以下のコードの初期バージョンを書きました。私の問題は、クリック座標とピース ノードの位置の不一致です。それらの座標は桁違いです。それらをどのように一致させるかについては不明のままです—それらを「同じ宇宙」に入れます。私は、Apple フォーラムからの多くの提案と、私自身の気まぐれな飛行を試みました。
これが私の現在の試みです。ほとんどが上記のリンクに基づいて元のバージョンに戻り、途中でログに記録された座標値があります。その結果、チェスの駒をドラッグすると、画面から突然飛び出してしまいます。
これまでに、興味深く有益なコメントやアドバイスをたくさんいただきました。しかし、先に進むには、クリックとベクトルを「同じ宇宙」に存在させるための秘密のソースを示す実用的なコード サンプルが必要になる可能性があることに気付きました。
ios - あるシーンから別のシーンにジオメトリをコピーする
SceneKit と Swift で遊んでいます (ただし、Objective-C での回答は問題ありません)。
collada ファイルをシーンにロードする方法を知っています。(ノードにロードできますか?)
これは私が使用しているSwiftコードです:
(エラーを宣言した方法がどれほど慣用的かはわかりません。お気軽に教えてください。)
これはうまくいくようですが、このシーン (またはシーン全体、それは問題ではありません) の何かを別のシーンに挿入したいと考えています。このようなものをコンパイルして実行しましたが、動作していないようです。
ios - Orientation から SCNNode の「上」側を取得する
私はSCNBox
SCNScene を持っています。シーンがアニメーション化されると、SCNBox
方向が変更されます。これは、そのpresentationNode.orientation
. この値は SCNVector4 で返されます。SCNBox
SCNVector4 で返された値から、上向きの面を判別するにはどうすればよいですか?
私はデータを正規化しようとしましたが、次のデータを思い付きました
残念ながら、これは常に正しいとは限らず、チェックすると無効な面が返されることがあります。
SCNBox
ジオメトリの方向プロパティから上向きの面を決定する信頼できる方法はありますか?
編集:Toyosの回答に基づいて、次のコードを思いつきましたが、機能しません。うまくいけば、これは最終目標に近づくのに役立ちます. また、シーンキットから頂点を抽出するにあるコードを使用して、SCNBoxNode の頂点を取得しました。