Я сделал 3d модель с блендером, и я хочу использовать его в наборе сюжетов.геометрия узла из файла dae nil
var platform = SCNNode();
let dae = SCNScene(named:"platform.dae");
platform = dae!.rootNode;
platform.position = SCNVector3(x: 0,y: 0,z:0);
if platform.geometry == nil {
print("geo is nil.")
}
platform.geometry?.firstMaterial?.diffuse.contents = "wood.png";
platform.geometry?.firstMaterial?.diffuse.wrapS = SCNWrapMode.Repeat
platform.geometry?.firstMaterial?.diffuse.wrapT = SCNWrapMode.Repeat
platform.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static, shape: SCNPhysicsShape(node: platform, options: nil));
scene.rootNode.addChildNode(platform);
Он всегда печатает «geo is nil». Поэтому я не могу создать физическое тело для модели. Может ли кто-нибудь сказать мне, почему это происходит?
Можете ли вы просмотреть платформу.dae в режиме предварительного просмотра? У вас есть это на корневом уровне в вашем приложении (как следует из вашего вызова) или в папке scnassets (нужно указать имя этой папки в вашем пути загрузки). Также: drop "var platform = SCNNode()" в пользу "let platform = dae? .rootNode". И вам не нужны эти точки с запятой. –
dae не находится в папке scnassets, но нет никаких проблем с его печатью. Я могу даже дать ему действия, но я не могу изменить материал, или я не могу сделать физическое тело, используя его геометрию. Потому что его геометрия всегда равна нулю. – white5tone
Кроме того, я попытался превратить dae в scn-файл. Но после этого приложение падает. Я думаю, dae! .rootNode возвращает nil. И да, я изменил метод инициализации как SCNScene (named: "platform.scn") – white5tone