Как экспортировать геометрию OBJ из Three.js, которая смещается шейдером GLSL?

Я попытался использовать следующий код, который я нашел в Переполнении стека, чтобы экспортировать OBJ из геометрии в сцене Three.js. Геометрия смещается шейдером GLSL, поэтому смещение вершин неКажется, экспорт с геометрией. Когда я импортирую OBJ в Blender, я получаю только плоскость, которая не смещена. Вы можете проверить рабочую версию смещения вhttp://kineticvideo.co

Как экспортировать OBJ при использовании шейдера GLSL для смещения геометрии? Пожалуйста помоги. У меня сложилось впечатление, что смещение вершин будет фактически обновлено в геометрии Three.js в режиме реального времени, но вместо этого кажется, что, даже если я установил geometry.verticesNeedUpdate = true; смещение действительно происходит в сетке, а не в геометрии.

Если да, то как мне экспортировать OBJ, используя из сетки, а не геометрию?

Фрагмент кода из Three.js, который объявляет геометрию и вершинный шейдер:

videoMaterial = new THREE.ShaderMaterial( {
    uniforms: {
        "tDiffuse": { type: "t", value: texture },
        "multiplier":  { type: "f", value: 66.6 },
        "displace":  { type: "f", value: 33.3 },
        "opacity":  { type: "f", value: 1.0 },
        "originX":  { type: "f", value: 0.0 },
        "originY":  { type: "f", value: 0.0 },
        "originZ":  { type: "f", value: -2000.0 }
    },

    vertexShader: RuttEtraShader.vertexShader,
    fragmentShader: RuttEtraShader.fragmentShader,
    depthWrite: true,
    depthTest: true,
    wireframe: false, 
    transparent: true,
    overdraw: false

});
videoMaterial.renderToScreen = true;
videoMaterial.wireframe = true;
geometry = new THREE.PlaneGeometry(720, 360, 720, 360);
geometry.overdraw = false;
geometry.dynamic = true;
geometry.verticesNeedUpdate = true;

mesh = new THREE.Mesh( geometry, videoMaterial );

Это функция, которую я использовал, которая экспортирует геометрию, но не смещение:

THREE.saveGeometryToObj = function (geometry) {
var s = '';
for (i = 0; i < geometry.vertices.length; i++) {
    s+= 'v '+(geometry.vertices[i].x) + ' ' +
    geometry.vertices[i].y + ' '+
    geometry.vertices[i].z + '\n';
}

for (i = 0; i < geometry.faces.length; i++) {

    s+= 'f '+ (geometry.faces[i].a+1) + ' ' +
    (geometry.faces[i].b+1) + ' '+
    (geometry.faces[i].c+1);

    if (geometry.faces[i].d !== undefined) {
        s+= ' '+ (geometry.faces[i].d+1);
    }
    s+= '\n';
}

return s;
console.log(s);
}

Ответы на вопрос(2)

Ваш ответ на вопрос