SceneKitが使えるようになったので、ためしにピラミッドを表示するiPhoneアプリのサンプルコードを描いてみます。
#import “ViewController.h”
@import SceneKit;
@interface ViewController ()
@property (nonatomic, weak) SCNScene *scene;
@end
@implementation ViewController
– (void)viewDidLoad {
[super viewDidLoad];
SCNScene *scene = [SCNScene scene];
SCNView *sv = [[SCNView alloc] initWithFrame:self.view.bounds];
sv.backgroundColor = [UIColor redColor];
sv.scene = scene;
[self.view addSubview:sv];
SCNCamera *camera = [SCNCamera camera];
camera.xFov = 40;
camera.yFov = 40;
SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = camera;
cameraNode.position = SCNVector3Make(0, 0, 60);
[scene.rootNode addChildNode:cameraNode];
SCNPyramid *pyramid = [SCNPyramid pyramidWithWidth:10 height:10 length:10];
SCNNode *pNode = [SCNNode nodeWithGeometry:pyramid];
pNode.name = @”pyramid”;
pNode.position = SCNVector3Make(0, 0, 0);
[scene.rootNode addChildNode:pNode];
SCNLight *light = [SCNLight light];
light.type = SCNLightTypeDirectional;
light.Color = [UIColor yellowColor];
SCNNode *lightNode = [SCNNode node];
lightNode.light = light;
[scene.rootNode addChildNode:lightNode];
self.scene = scene;
}
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
SCNNode *pyramid = [self.scene.rootNode childNodeWithName:@”pyramid” recursively:YES];
[SCNTransaction begin];
[SCNTransaction setAnimationDuration:8.0];
pyramid.rotation = SCNVector4Make(1, 0, 1, M_PI * 4.0);
[SCNTransaction commit];
}
– (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end