頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


SCNNodeオブジェクトをコピーしたい

SceneKitのSCNNodeオブジェクトをコピーしたかったんだわ。
copyでいいのかな、、、うまくいかねえ、mutableCopyかな、、、?これもだめか、、、調べるとリファレンスに
- (void)duplicateNode:(SCNNode *)node withMaterial:(SCNMaterial *)material
{
    SCNNode *newNode = [node clone];
    newNode.geometry = [node.geometry copy];
    newNode.geometry.firstMaterial = material;
}
なんてある。↓ここね。
clone - SCNNode | Apple Developer Documentation
geometryやmaterialも参照しちゃうので別に使うなら新たに設定しないとだめってことか。なるほどね。

ところが、これでもうまくいかない。新しいオブジェクトのscaleもpositionも設定しても変化ない、、、つまり元のオブジェクトと変わってない、、、?

同じ位置に表示されてチラチラする

↑こんな感じに別な場所やscaleで描こうとしてるのに同じ場所に同サイズで表示してるので時折黒い面(コピー後のオブジェクトの色)が描画される、というよく見るよね、3D関連やってると。

もう新しく作るものなんてないのでは?と悩むこと幾星霜、ようやく気付いたのがこのコピー元のオブジェクトにはボーンがあって動きはそっち優先になってたのが原因。
{
    newNode.skinner = nil;    
}
として消してやれば新しいSCNNodeオブジェクトは意図通りに動いてくれた。ふー。
スポンサーサイト




<< オブジェクト選択時の輪郭線を実装したい  TopPage  TFRecordで多次元配列を扱う >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1110-625bef38




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.