3D модель экспортируется из SketchUp в три. js выглядит ужасно - PullRequest
1 голос
/ 27 апреля 2020

Cheers,

Я использую 3D-модель SketchUp в пользовательском слое Mapbox (с Threebox / THREE. js) и у меня возникают проблемы с тем, чтобы он выглядел менее ужасно.

Модель отлично смотрится в SketchUp, но когда я добавляю ее в Mapbox, все огни портятся. У треугольников, кажется, есть отдельные направленные источники света, которые указывают повсюду.

SketchUp model

И вот как это выглядит после экспорта (как .OBJ + .MTL) и импорта:

Model in Mapbox

onAdd выглядит следующим образом:

      onAdd: function(map, gl) {
        this.tb = new Threebox(map, gl, { defaultLights: true });

        const baseName = "hanse388_006";

        var manager = new THREE.LoadingManager();
        new THREE.MTLLoader(manager).load(
          baseName + ".mtl",
          function(materials) {
            materials.preload();

            new THREE.OBJLoader(manager).setMaterials(materials).load(
              baseName + ".obj",
              function(object) {
                this.boat = this.tb.Object3D({ obj: object, units: "meters" });
                this.boat.setCoords([DEFAULT_LNG, DEFAULT_LAT, 0]);
                this.tb.add(this.boat);
              }.bind(this)
            );
          }.bind(this)
        );

Стандартное освещение от Threebox (слегка измененное мной) выглядит так:

        this.scene.add( new THREE.AmbientLight( 0xffffff, 0.6 ) );
        var sunlight = new THREE.DirectionalLight( 0xffffff, 0.7 );
        sunlight.position.set(0,80000000,100000000);
        sunlight.matrixWorldNeedsUpdate = true;
        this.world.add(sunlight);

1 Ответ

1 голос
/ 27 апреля 2020

В качестве обходного пути, предложенного @ Mugen87, я попытался выполнить экспорт / импорт в другом формате.

SketchUp не поддерживает glTF, но когда я использовал Collada (.dae), он работал отлично!

Collada model

...