[英]SCNBox – Map a texture onto five of six sides
您可以使用SCNMaterialProperty
中的contentsTransform
屬性,將所需的紋理坐標從圖像調整到SCNBox
一些簡化示例的解釋:
你想跳過矩形1, 3, 7, 9
並用這個紋理覆蓋你的立方體。 為此,只需將SCNBox
的邊尺寸標准化為 0 到 1 之間,並使用它來設置contentsTransform
矩陣中的比例和變換。
在我的示例中,我有一個邊長相等的立方體 - 因此它將成為整個紋理的第三部分。 從紋理中取出5
矩形
let normalizedWidth = 1/3
let normilizedHeight = 1/3
let xOffset = 1 //skip 1,4,7 line
let yOffset = 1 //skip 1,2,3 line
let sideMaterial = SCNMaterial()
sideMaterial.diffuse.contents = textureImage
let scaleMatrix = SCNMatrix4MakeScale(normalizedWidth, normilizedHeight, 0.0)
sideMaterial.diffuse.contentsTransform = SCNMatrix4Translate(scaleMatrix,
normalizedWidth * xOffset, yOffset * yOffset, 0.0)
您可以用配置的材料填充 5 個面,最后一個(在背面)只用顏色填充,並將它們設置為SCNBox
的materials
屬性。 結果你會得到
最簡單的方法可能是使用+geometryWithSources:elements:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.