簡體   English   中英

SceneKit - 紋理未正確顯示

[英]SceneKit - Textures not properly displayed

我有一個立方體(圓形),並希望在其中一個上顯示紋理。 我可以通過以下方式訪問該方面的材料:

var tex1: SCNMaterial! = cube.geometry?.materialWithName("_1")!

然后我設置它的圖像內容:

tex1.diffuse.contents = "cube1"

這看起來像這樣:

紋理的多維數據集

這告訴我它確實有效,但白色部分不應該在中心。 (我使用的圖像中間有白色部分。)
我試圖使用偏移來在表面上移動圖像,我也想縮放它。 我試過這樣的:

tex1.diffuse.contents.offset = SCNVector3Make(20, 0, 0)

這給了我錯誤:它說它無法分配該表達式的結果。 (我也嘗試過contentMode ,同樣的錯誤,我認為因為這些是用於UI,而不是SCN)

問題

  1. 有誰知道我能做什么?
  2. 也許抵消不是要走的路?
  3. 如何縮放圖像?

材質屬性的contentsAnyObject ,這意味着編譯器將允許您在其上調用任何方法(在任何對象類型上定義)。 這並不意味着所有方法或屬性訪問器實際上都是由特定contents的實際類實現的。

但是,材質屬性確實有一個contentsTransform選項。 你看過那個嗎?

這是我的解決方案:創建偏移量:

let offsetVal =  SCNMatrix4MakeTranslation(0, -0.05, 0)

創造規模:

let scaleVal = SCNMatrix4MakeScale(1.5, 1.5, 1.5)

如果您只想設置偏移屬性:

material.diffuse.contentsTransform = offsetVal

如果您只想設置Scale Property:

material.diffuse.contentsTransform = scaleVal

如果你想混合它們:

material.diffuse.contentsTransform = SCNMatrix4Mult(scaleVal, offsetVal)

希望這有用!!!

暫無
暫無

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

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