2017-07-19 4 views
1

Ich versuche zur Zeit die folgenden Quellen zu kombinieren:ARKit, SceneKit, SCNPhysicsVehicle: Wie skaliere ich Daemodelle richtig?

Äpfel SceneKit Fahrzeug Demo https://developer.apple.com/library/content/samplecode/SceneKitVehicle/Introduction/Intro.html

resp. seine Swift Version https://github.com/leonmak/scenekit-car-swift3

Arkit von Beispiel https://blog.markdaws.net/apple-arkit-by-example-ef1c8578fb59

resp. seine Swift-Version

Jedes Projekt auf eigene Faust funktioniert wie ein Charme (obwohl ich die Fahrzeug-Demo geändert habe, so dass das Auto über Bildschirmtasten gesteuert werden kann).

Jetzt, wenn ich versuche, beide Projekte zu kombinieren, um ein Augmented-Reality-Rennspiel zu erstellen, stoße ich auf Probleme hinsichtlich der Größe des .dae-Modells des Autos: es ist zu groß.

Ich kann das Modell mit der (Gehäuse) Knoten .scale Eigenschaft skalieren, aber sobald ich die SCNPhysicsVehicle Eigenschaften und Verhalten hinzufügen, wird das Auto zurückgesetzt (?) Auf seine ursprüngliche Größe. Ich habe versucht, das Modell in Xcode zu skalieren (Dae-Datei öffnen, Maßstab ändern), aber seine Bounding Box bleibt gleich - das sagt mir, dass die Neuskalierung nicht richtig funktioniert.

Irgendwelche Hinweise?

Antwort

2

Was ich tun möchte, ist Blender oder ein anderes 3D-Modellierungsprogramm zu verwenden, um die Größe Ihres DAE-Modells in Meter zu ändern. Alles in ARKit basiert auf Zählern. Wenn Sie also an derselben Metrik festhalten, können Sie alle Ihre Modelle gut miteinander spielen lassen, ohne zu raten, was der Skalierungsfaktor sein muss.

0

Ich bin mir nicht sicher, wie man das Modell direkt in Xcode repariert. Sie können es jedoch im Mixer reparieren. Beginnen Sie mit dem Importieren des Objekts in den Mixer. Wählen Sie das Objekt und beobachten Sie seine Abmessungen. Skalieren Sie das Objekt auf die gewünschten Dimensionen und wenden Sie sie an, indem Sie Strg + A drücken und Skalierung auswählen. Alternativ können Sie im Objektmenü Übernehmen -> Skalieren wählen. Jetzt können Sie Ihr Modell mit der korrigierten Größe exportieren.

2

1) Sie können die Dae-Modelle direkt mit art.scnassets skalieren.

art.scnassets -> car.dae -> node inspector -> transforms -> scale the object

2) kann durch SCNAction maßstabs 3dmodel

let scene = SCNScene(named: "art.scnassets/cup.dae")! 
let node = scene.rootNode.childNode(withName: "cup", recursively: true)! 
let action = SCNAction.scale(by: sender.scale, duration: 1.0) 
node.runAction(action)