Тени на земле выглядят неточно и размыто

Я сделал проект Threejs, где я динамически создаю землю из шума перлина. Вот код:

createGround() {

const resolutionX = 100
const resolutionY = 100
const actualResolutionX = resolutionX + 1 // plane adds one vertex
const actualResolutionY = resolutionY + 1


const geometryPlane = new THREE.PlaneGeometry(this.sizeX, this.sizeY, resolutionX, resolutionY)

const noise = perlin.generatePerlinNoise(actualResolutionX, actualResolutionY)

let i = 0

for (let x = 0; x < actualResolutionX; x++) {
  for (let y = 0; y < actualResolutionY; y++) {
    let h = noise[i]
    }

    geometryPlane.vertices[i].z = h
    i++
  }
}

geometryPlane.verticesNeedUpdate = true
geometryPlane.computeFaceNormals()

const materialPlane = new THREE.MeshStandardMaterial({
  color: 0xffff00,
  side: THREE.FrontSide,
  roughness: 1,
  metallness: 0,
})

const ground = new THREE.Mesh(geometryPlane, materialPlane)
geometryPlane.computeVertexNormals()
ground.name = GROUND_NAME
ground.receiveShadow = true
scene.add(ground)

}

Я доволен сгенерированной геометрией, но проблема в том, что тени выглядят очень неточными.

введите здесь описание изображения

Вот мой код для света:

const light = new THREE.DirectionalLight(
  'white',
  1,

)
light.shadow.mapSize.width = 512 * 12 // default is 512. doesnt do anything
light.shadow.mapSize.height = 512 * 12 // default is 512
light.castShadow = true
light.position.set(100, 100, 100)
scene.add(light)

light.shadowCameraVisible = true

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

Остальной код можно найти здесь: https://github.com/Waltari10/workwork


person Waltari    schedule 12.10.2018    source источник


Ответы (1)


Эта тень выглядит не так уж и плохо, учитывая тот факт, что вы не настроили свет :).

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

Попробуйте добавить немного направленного света, имитирующего направление и цвет Солнца, и посмотрите, поможет ли это, или расскажите нам больше о своей настройке освещения.

Если у вас есть какие-либо источники света, которые уже отображают карту теней, проверьте их разрешение, возможно, вам придется увеличить его.

person kolenda    schedule 15.10.2018
comment
Я добавил код, который я использую для света. Как увеличить карту теней? - person Waltari; 16.10.2018
comment
@Waltari Что касается карты теней, посмотрите документацию: threejs. org/docs/index.html#api/en/lights/shadows/ - person prisoner849; 17.10.2018
comment
Я добавил light.shadow.mapSize.width = 512 * 12, но это, кажется, ничего не меняет, установил ли я его на 5 или 5000. - person Waltari; 25.10.2018
comment
Также добавлен общедоступный репозиторий git для вопросов по всему коду. - person Waltari; 25.10.2018