Пользовательская геометрия, зарегистрированная в A-Frame, не отображается при добавлении в сцену - PullRequest
0 голосов
/ 17 октября 2019

Я создал несколько функций, которые создают геометрии THREE.js со значениями длины phi до 360, которые не являются полыми, и я хотел бы отобразить их в сцене A-Frame (которая выполняется поверх React). Однако, когда я пытаюсь их визуализировать, я обнаруживаю, что не могу.

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

Это мой код, который я использовал для регистрации пользовательской геометрии:

this.AFRAME.registerGeometry("phisphere", {
    schema : {
        phi : { default : 360, min : 0, type : "int" },
    },    
    init : (data) => {
        let phi = this.degToRad(data.phi);
        let sphere = new THREE.SphereGeometry(1, 18, 36, 0, phi);

        let semiStart = new THREE.CircleGeometry(1, 36, 0, Math.PI);
        semiStart.applyMatrix(this.rotationMatrix("z", Math.PI / 2));
        semiStart.applyMatrix(this.rotationMatrix("x", Math.PI));

        let semiEnd = new THREE.CircleGeometry(1, 32, 0, Math.PI);
        semiEnd.applyMatrix(this.rotationMatrix("z", Math.PI / 2));
        semiEnd.applyMatrix(this.rotationMatrix("y", phi));

        let geometry = new THREE.Geometry();
        geometry.merge(sphere);
        geometry.merge(semiStart);
        geometry.merge(semiEnd);

        this.geometry = geometry;
    }
});

и это вызов, который я использую для ее рендеринга:

<a-entity geometry="primitive: phisphere; phi : 260" scale="2 2 2" position="0 2 0"></a-entity> 

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

1 Ответ

0 голосов
/ 17 октября 2019

Не используйте функции стрелок , которые будут привязывать методы к неправильным this. Вместо этого используйте обычные функции:

AFRAME.registerGeometry("phisphere", {
  schema : {phi : {default : 360, min : 0, type : "int"}},    
  init : function () {}
});

Рабочий пример: https://glitch.com/edit/#!/fanatical-cardamom?path=phisphere.js:5:19

...