簡體   English   中英

在iOS SceneKit中更新幾何表面的正確方法是什么?

[英]What is the proper way to update a Geometry surface in iOS SceneKit?

我知道你可以在第一次將球體或平面添加到場景時通過這樣的方式將球體或平面的表面設置為圖像。

            UIImage image = UIImage.FromFile("firstimage.jpg");
            Sphere.FirstMaterial.Diffuse.Contents = image;

但是,當您想要在用戶操作上更新它時...就像點擊按鈕一樣。 現在我做這樣的事情。

            UIImage newImage = UIImage.FromFile("secondimage.jpg");
//digs through the scnview and the scene, into it's child nodes, finds the geometry and replaces the image      
mySCNView.Scene.RootNode.ChildNodes[0].Geometry.FirstMaterial.Diffuse.Contents = newImage;

但這看起來有點亂,實際上需要2到3秒才能完成。 我並不特別擔心數組索引硬編碼。

有沒有更有效的方式來進行這種更新?

PS我為一些有趣的代碼行道歉,這實際上是用Xamarin.iOS編寫的,但是可以隨意在Swift或C中回答,我會做翻譯。

聽起來你的瓶頸是將圖像傳輸到GPU上。 那么預加載怎么樣? 在需要之前實例化材料。 然后在用戶操作時將其交換出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM