SCNMaterial предотвратить растяжение

У меня есть пользовательский геометрический четырехугольник, и на нем отображается мое текстурное изображение, но я хочу, чтобы оно отображалось как заливка, а не растягивалось или сжималось, чтобы соответствовать пространству.

Я применяю одну и ту же текстуру к нескольким стенам в комнате, поэтому, если изображение является обоями, оно должно выглядеть правильно.

Есть ли способ использовать следующее, а также определить, как оно заполняется?

quadNode.geometry?.firstMaterial?.diffuse.contents = UIImage(named: "wallpaper3.jpg")

Спасибо

[ОБНОВИТЬ]

let quadNode = SCNNode(geometry: quad)

let (min, max) = quadNode.boundingBox

let width = CGFloat(max.x - min.x)
let height = CGFloat(max.y - min.y)

let material = SCNMaterial()
material.diffuse.contents = UIImage(named: "wallpaper3.jpg")
material.diffuse.contentsTransform = SCNMatrix4MakeScale(Float(width), Float(height), 1)
material.diffuse.wrapS = SCNWrapMode.repeat
material.diffuse.wrapT = SCNWrapMode.repeat

quadNode.geometry?.firstMaterial = material

1 ответ

Решение

Я думаю, что это может помочь вам, это в цели c, но это должно быть понятно:

    CGFloat width = self.planeGeometry.width;
    CGFloat height = self.planeGeometry.length;

    SCNMaterial *material = self.planeGeometry.materials[4];
    material.diffuse.contentsTransform = SCNMatrix4MakeScale(width, height, 1); 
    material.diffuse.wrapS = SCNWrapModeRepeat;
    material.diffuse.wrapT = SCNWrapModeRepeat;

Плоская геометрия определяется следующим образом:

self.planeGeometry = [SCNBox boxWithWidth:width height:planeHeight length:length chamferRadius:0]; 
//planeHeight = 0.01;

Я использую это, чтобы показать горизонтальные плоскости, и материал, из которого он сделан, не растягивается, а просто расширяется. Надеюсь, это то, что вам нужно.

Размеры плоскости определяются как: (если это необходимо)

float width = anchor.extent.x;
float length = anchor.extent.z;

Это делается в методе initWithAnchor, который использует ARPlaneAnchor, найденный на плоскости.

Другие вопросы по тегам