2017-01-03 7 views
3

モバイルアプリケーションに3D(.objと.stl)オブジェクトを表示しています。 3Dオブジェクトを表示するために私は私の要件は、ユーザーのジェスチャーに応じて3Dオブジェクトの幅と高さを変更することです今SceneKitの3Dオブジェクトの高さの幅を変更する方法iOS

-(void)spriteKitEx 
{ 
    sceneView = [[SCNView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 200)]; 
    sceneView.playing = true ; 
    sceneView.allowsCameraControl = true ; 
    scene = [SCNScene sceneNamed:@"realship.obj"]; 

    //Try to change color here using Scenlight 
    SCNLight *light =[[SCNLight alloc] init]; 
    light.type = SCNLightTypeAmbient; 
    light.color = [UIColor redColor]; 

    SCNNode *lightNode = [[SCNNode alloc] init]; 
    lightNode.light = light ; 
    lightNode.scale = SCNVector3Make(1.0, 500.0, 2.0); 
    [scene.rootNode addChildNode:lightNode]; 
    sceneView.scene = scene; 
    [sceneView setBackgroundColor: [UIColor redColor]]; 

    [self.view addSubview:sceneView]; 
} 

SceneKit Framework.を使用しています。

私はSceneViewオブジェクトでこれを実行しようとしましたが、幅と高さを変更できませんでした。

誰でも私にこれを手伝ってもらえますか?

私はあなたの提案とガイドを歓迎します。

ありがとうございました。

1.カメラ、および変更ズーム/レンズ長および/またはドリーそれが

ズームは通常、レンズの長さで説明されています

答えて

3

は、3Dシーンでこれを行うには2つの方法がありますまたは視野に入る。バーチャルな長さが大きくなるとズームインし、小さくなるとズームアウトします。逆に、より大きな視野がズームアウトされ、より小さな視野がズームインされる。

ドローイングは、被写体からの距離に関してカメラの位置を移すプロセスである。それはそれが見ているものです。オブジェクトが小さくなるほど、オブジェクトは大きくなります。

2.スケールオブジェクト

これはかなり単純です。しかし、1つのオブジェクトだけが変化するように見えるので、ジェスチャーは奇妙に見えます。あなたが3D編集アプリを作っているなら、これはあなたが望むものかもしれません。それ以外の場合は、おそらくカメラを動かしたり、ズームしたりしたいと思うでしょう。

+0

私はSCNCameraオブジェクトを使用していますが、zoomプロパティが見つかりませんでした。 – Tech

+0

がある場合、サンプルコードを教えてください。残念ながら、SceneKitはDOFエフェクトのアパーチャのバーチャルコントロールを提供しますが、ズームを変更するには:https://developer.apple.com/reference/scenekit/scncamera/1436608-xfov – Confused

+0

可能であれば、カメラをオブジェクトの近くまでさらに移動したいと思います。視野は変わらないが、オブジェクトはカメラから遠ざかったり遠ざかったりするので、これは一般的により快適な「ズーム」体験を提供する。 – Confused

2

まずは、これが単純化しているとお詫び申し上げます。 Xcodeの使い慣れたレベルを知らなくても、3Dファイルの拡大、移動、または方向付けを行う方法について書いています。 scnassetsフォルダ内のアイテムの表示と操作。最後に注意しておきますが、私はobjファイルでは動作しませんが、daeファイルのようにXcodeで編集できるということを想定しています。

Project Navigator(⌘1)を開き、objファイルが含まれているscnassetsフォルダを探してください。 scnassetsフォルダからobjファイルを選択すると、オブジェクトがエディタに表示されます。シーングラフビューを開き、幅と高さのサイズを変更するノードを選択します。ユーティリティビューのノードインスペクタ(⌥⌘3)には、変更可能なノードのいくつかの機能が表示されます。そのうちの1つはスケールです。スケールの下で、変更したいノードのバウンディングボックスの寸法が表示されます。

複数のノードを一度に再スケーリングする必要がある場合は、シーングラフビューの下の+記号を使用して子ノードを作成し、再スケーリング(または移動または方向変更)する必要があるノードを移動することをおすすめします。その子ノードを必要なサイズに再スケーリングします。

また、予防策として、objファイルに変更するたびに保存してください。 Xcode 8.2.1ははるかに安定していますが、変更するたびに8.2がクラッシュし、dae/scnファイルにクラッシュする可能性があります。このすべてが役立つことを願っています。

関連する問題