В этот код хочу добавить свой объект в формате gltf . как это сделать?
код:
setMesh() {
        const geometry = new THREE.BufferGeometry();
        const firstPos = this.getGeometryPosition(new THREE.SphereBufferGeometry(1, 32, 32).toNonIndexed());
        const secPos = this.getGeometryPosition(new THREE.TorusBufferGeometry(0.7, 0.3, 32, 32).toNonIndexed());
        const thirdPos = this.getGeometryPosition(new THREE.TorusKnotBufferGeometry(0.6, 0.25, 300, 20, 6, 10).toNonIndexed());
        const forthPos = this.getGeometryPosition(new THREE.CylinderBufferGeometry(1, 1, 1, 32, 32).toNonIndexed());
        const fivePos = this.getGeometryPosition(new THREE.IcosahedronBufferGeometry(1.1, 0).toNonIndexed());
        const material = new THREE.RawShaderMaterial({
            vertexShader: `
                          attribute vec3 position;
                          attribute vec3 secPosition;
                          attribute vec3 thirdPosition;
                          attribute vec3 forthPosition;
                          attribute vec3 fivePosition;
                          uniform float u_sec1;
                          uniform float u_sec2;
                          uniform float u_sec3;
                          uniform float u_sec4;
                          uniform mat4 modelViewMatrix;
                          uniform mat4 projectionMatrix;
                    
                          void main() {
                           vec3 toTorus = mix(position, secPosition, u_sec1);
                           vec3 toTorusKnot = mix(toTorus, thirdPosition, u_sec2);
                           vec3 toCylinder = mix(toTorusKnot, forthPosition, u_sec3);
                           vec3 finalPos = mix(toCylinder, fivePosition, u_sec4);
                    
                           gl_Position = projectionMatrix * modelViewMatrix * vec4(finalPos, 1.0 );
                           gl_PointSize = 3.0;
                          }`,
            fragmentShader: `
                              precision mediump float;
                              void main() {
                                  vec2 temp = gl_PointCoord - vec2(0.5);
                                  float f = dot(temp, temp);
                                  if (f > 0.25 ) {
                                      discard;
                                  }
                                  gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
                              }`,
            uniforms: {
                u_sec1: { type: "f", value: 0.0 },
                u_sec2: { type: "f", value: 0.0 },
            },
            transparent: true,
            blending: THREE.AdditiveBlending,
        });

        geometry.setAttribute("position", new THREE.BufferAttribute(firstPos, 3));
        geometry.setAttribute("secPosition", new THREE.BufferAttribute(secPos, 3));
        geometry.setAttribute("thirdPosition", new THREE.BufferAttribute(thirdPos, 3));
        geometry.setAttribute("forthPosition", new THREE.BufferAttribute(forthPos, 3));
        geometry.setAttribute("fivePosition",new THREE.BufferAttribute(fivePos, 3));

        this.mesh = new THREE.Points(geometry, material);

        this.group = new THREE.Group();
        this.group.add(this.mesh);

        this.stage.scene.add(this.group);
    }