Применить матрицу к сфере/Object3D

У меня есть панорамное изображение (текстура) на 360 °, которое я наношу на сферу, и я помещаю свою камеру внутрь сферы, чтобы получить сферическую проекцию. Теперь текстура проецируется на внешнюю сторону сферы. Я хочу «вывернуть текстуру наизнанку», и я читал, что это можно сделать, применив матрицу.

Я хотел бы применить матрицу к сфере (Object3D) в Rajawali/OpenGL.

Это можно сделать в ThreeJS следующим образом:

var sphere = new THREE.SphereGeometry(100, 100, 40);
sphere.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));

Документация three.js для applyMatrix:

это обновляет положение, вращение и масштаб с матрицей.

и я хотел бы сделать это в Раджавали:

mSphere = new Sphere(100, 100, 40);
//Apply the matrix here

Документацию по Matrix/Object3D можно найти здесь Matrix4 Object3D

Или можно как-то иначе это сделать?


person Verhelst    schedule 22.02.2015    source источник


Ответы (2)


Это было исправлено!

mSphere = new Sphere(100, 100, 40);
mSphere.setScaleX(-1);
mSphere.setScaleY(1);
mSphere.setScaleZ(1);
person Verhelst    schedule 22.02.2015
comment
Имейте в виду, что вам может понадобиться отрегулировать поле зрения камеры. Я установил его на 105°, что кажется хорошим углом для картона. - person Paul Lammertsma; 06.07.2015

Разве это не работа для material.side?

Цитата из документа three.js для материала:

.сторона

Определяет, какая из сторон лица будет визуализирована — передняя, ​​задняя или обе. По умолчанию — THREE.FrontSide. Другими вариантами являются THREE.BackSide и THREE.DoubleSide.

Таким образом, глядя на поверхность сферы изнутри, нужно использовать THREE.BackSide.

person Elias Hasle    schedule 01.10.2016