2017-01-03 115 views
3

我在我的移動應用程序中顯示3D(.obj和.stl)對象。 爲了顯示3D對象我使用SceneKit Framework.如何更改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]; 
} 

現在我的要求是根據用戶手勢來改變3D對象的寬度和高度。

我試圖在我的SceneView對象中做到這一點,但無法改變寬度和高度。

任何人都可以幫助我解決這個問題。

我歡迎您的建議和指導。

謝謝先進。

回答

3

有兩種方法在三維場景中做到這一點:

1.使用中的攝像機,變焦改變/鏡頭的長度和/或小車它

放大鏡頭長度通常被描述或視野。虛擬長度越大,縮小越小。相反,較大的視野會縮小,而較小的視野會放大。

拖拽是將攝像機的位置與其主體的距離置換的過程;它正在看的。物體越遠,物體越小,越接近越大。

2比例的對象

這是非常簡單的。但是對於一個手勢看起來很奇怪,因爲只有一個對象會出現變化。如果你正在製作3D編輯應用程序,這可能是你想要的。否則,您可能想要移動和/或縮放相機。

+0

我使用SCNCamera對象,但並沒有發現變焦性能u能請給我樣品鱈魚,如果你有 – Tech

+0

不幸的是,雖然SceneKit確實提供了光圈,景深效果的虛擬控制,你必須處理的一個比較傳統的領域查看更改縮放: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文件,你的對象應該出現在編輯器中。打開場景圖視圖並選擇需要調整寬度和高度的節點。在Utilities視圖的節點檢查器(⌥⌘3)中,您會看到可以更改的節點的幾個功能,其中之一是Scale。在「縮放」下,您會看到要更改節點的邊界框尺寸。

如果您需要一次重新調整幾個節點,我建議使用場景圖視圖下的+號創建一個子節點,然後將需要重新縮放(或移動或重新定向)的節點移動到子節點,然後將該子節點重新縮放到您需要的大小。

此外,作爲預防措施,請在每次更改後保存到您的obj文件中。 Xcode 8.2.1更加穩定,但8.2之後會在dae/scn文件每更改一次或兩次後崩潰。希望所有這些都有所幫助。

相關問題