Цель
Со вчерашнего дня я застрял с проблемой изменения примера JeelizFilterFace. Моя цель - создать свои собственные фильтры, поэтому я запустил учебник по шляпам Луффи, который объясняет, что: https://jeeliz.com/blog/creating-a-snapchat-like-filter-with-jeelizs-facefilter-api-part-1-creating-your-first-filter/
Краткое описание проблемы
Моя проблемапрост: у меня не может быть примера glTF, работающего с моделями glTF. Это всегда показывает мне черную форму, без текстуры.
Подробная информация о проблеме
В руководстве объясняется, что модель должна быть сгенерирована с помощью расширений экспортера Blender, чтобы создать файл json, который является моделью. Но экспортер Blender больше не поддерживается. Вот почему я пытаюсь использовать ThreeJS с загрузчиком GLTF (что является лучшим решением по всем учебникам). Моя проблема в том, что я не вижу текстуру ни на одной из моих моделей, когда загружаю ее с помощью JeelizFaceFilter / Threejs. У меня есть только черная форма.
Вот что я сделал:
- Сначала я прошел весь урок, чтобы убедиться, что могу запустить инструмент FilterFace, за исключением экспорта модели изБлендерная часть. Итак, я просто скопировал экспортированные ресурсы из репозитория Jeeliz. FilterFace работает хорошо: шляпа видимая, с текстурой, и я могу играть с параметрами THREEJS.
- Поскольку я не мог экспортировать JSON из blender, я хотел попробовать использовать модель GLTF 2.0, я попробовал эту модель, которая работает в инструменте gltf-viewer (см. Рисунок ниже): https://s3.eu -west-3.amazonaws.com / com.julianlecalvez / LuffysHat.zip
Пока все выглядит нормально, но когда я пытаюсь использовать этот пример загрузчика glTF в демонстрационных программах glTF (
https://github.com/jeeliz/jeelizFaceFilter/tree/master/demos/threejs/gltf_fullScreen),, он отображает мою шляпу в черном цвете. У меня хорошая форма, но нет текстуры (или нет света)?). Я просто заменил URL модели в этом файле. И я даже не уверен, что модель по умолчанию (шлем) отображает какую-либо текстуру. Я попытался с моделью из SketchFab, и у меня естьто же самое: черная фигура, без текстуры.
Я поместил здесь код для инициализации представления, когда пытался повторить его вне демонстрационного файла:
let init_view = function(spec) {
const threeStuffs = THREE.JeelizHelper.init(spec, null);
const SETTINGS = {
gltfModelURL: 'objects/luffys_hat_gltf/luffys_hat.gltf',
offsetYZ: [1,0],
scale: 2.2
};
// const loader = new THREE.GLTFLoader();
const gltfLoader = new THREE.GLTFLoader();
gltfLoader.load( SETTINGS.gltfModelURL, function ( gltf ) {
gltf.scene.frustumCulled = false;
// center and scale the object:
const bbox = new THREE.Box3().expandByObject(gltf.scene);
// center the model:
const centerBBox = bbox.getCenter(new THREE.Vector3());
gltf.scene.position.add(centerBBox.multiplyScalar(-1));
gltf.scene.position.add(new THREE.Vector3(0,SETTINGS.offsetYZ[0], SETTINGS.offsetYZ[1]));
// scale the model according to its width:
const sizeX = bbox.getSize(new THREE.Vector3()).x;
gltf.scene.scale.multiplyScalar(SETTINGS.scale / sizeX);
// dispatch the model:
threeStuffs.faceObject.add(gltf.scene);
});
// CREATE THE CAMERA
THREECAMERA = THREE.JeelizHelper.create_camera();
}