У меня есть куб (округленный) и вы хотите отобразить текстуру на одной из ее сторон. Я могу получить доступ к материалам на той стороне с:SceneKit - Текстуры не отображаются должным образом
var tex1: SCNMaterial! = cube.geometry?.materialWithName("_1")!
Затем я его содержимое изображения:
tex1.diffuse.contents = "cube1"
Это будет выглядеть следующим образом:
Это показывает мне, что он работает, но белая часть не находится в центре, как это должно быть. (Изображение, которое я использую, имеет белую часть в центре.)
Я попытался использовать смещение, чтобы перемещать изображение вокруг на поверхности, я хотел бы также масштабировать его. Я пробовал так:
tex1.diffuse.contents.offset = SCNVector3Make(20, 0, 0)
Это дает мне ошибки: он говорит, что не может присвоить результат этого выражения. (Я также попытался contentMode
, те же ошибки, я думаю, потому что это для пользовательского интерфейса, не SCN)
Вопросов
- Кто-нибудь знает, что я могу сделать?
- Возможно, смещение - это не путь?
- Как я могу масштабировать изображение?
Спасибо за ответ. Не могли бы вы предоставить мне немного больше информации, пожалуйста? Я решил масштабировать с помощью 'myMat.diffuse.contentsTransform = SCNMatrix4MakeScale (1.5, 1.5, 1.5)', а также переведен с помощью 'myMat.diffuse.contentsTransform = SCNMatrix4MakeTranslation (0, -0.05, 0). Но когда я делаю перевод, он удаляет масштабирование. Есть идеи? Странно то, что мои изображения, которые я использую, имеют квадрат, и поэтому я думал, что он будет просто соответствовать автоматически. – LinusGeffarth
'MakeScale' дает вам матрицу преобразования. 'MakeTranslation' также дает вам матрицу преобразования. [Как вы комбинируете преобразования?] (Https://en.m.wikipedia.org/wiki/Transformation_matrix) Подсказка: есть функция «SCNMatrix4» или две, которая берет пару матриц и возвращает новую. – rickster
вот мое решение: myMat.diffuse.contentsTransform = SCNMatrix4Mult (SCNMatrix4MakeScale (1.5, 1.5, 1.5), SCNMatrix4MakeTranslation (0, -0.05, 0)) работает очень хорошо – Tritmm