Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для rfl
14 / 10 / 7
Регистрация: 13.06.2020
Сообщений: 260

Создание ландшафта на основе шума Перлина Three.js

03.08.2021, 19:48. Показов 2381. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет!

Решил поиграться с Three.js и на ум пришло создать 3d terrain на основе шума Перлина. Example шума я нашел в инете. Создал
MeshStandartMaterial для Mesh и в свойтсвах материала displacementMap указал этот шум. Это мне помогло создать неровности в самом terrain. Но проблема в том что неровности-то он создал, а вот норм отображать не получилось. В итоге он залился одним цветом. А хочу сделать что-то на подобии этого.

Вот что имеется у меня на данный момент.

script.js
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import './style.css'
import * as THREE from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js'
import * as dat from 'dat.gui'
 
 
// Debug
const gui = new dat.GUI()
 
 
 
 
//Texture loader
const loader = new THREE.TextureLoader();
let noise = loader.load('noise.png');
 
// Canvas
 
// Scene
const scene = new THREE.Scene()
 
// Objects
const geometry = new THREE.PlaneBufferGeometry(3,3,64,64);
 
 
// Materials
const material = new THREE.MeshStandardMaterial({
    color: 'gray',
    displacementMap: noise
});
const plane = new THREE.Mesh(geometry, material);
scene.add(plane);
plane.receiveShadow = true;
plane.rotation.x = -1.5;
 
 
// Mesh
 
 
// Lights
 
const pointLight = new THREE.PointLight(0xffffff, 2)
pointLight.position.x = 2
pointLight.position.y = 3
pointLight.position.z = 4
scene.add(pointLight)
 
/**
 * Sizes
 */
const sizes = {
    width: window.innerWidth,
    height: window.innerHeight
}
 
window.addEventListener('resize', () =>
{
    // Update sizes
    sizes.width = window.innerWidth
    sizes.height = window.innerHeight
 
    // Update camera
    camera.aspect = sizes.width / sizes.height
    camera.updateProjectionMatrix()
 
    // Update renderer
    renderer.setSize(sizes.width, sizes.height)
    renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2))
})
 
/**
 * Camera
 */
// Base camera
const camera = new THREE.PerspectiveCamera(75, sizes.width / sizes.height, 0.1, 1000)
camera.position.x = 2
camera.position.y = 5
camera.position.z = 10
scene.add(camera)
 
const gridHelper = new THREE.GridHelper( 15, 15 );
scene.add( gridHelper );
 
 
/**
 * Renderer
 */
 let renderer = new THREE.WebGLRenderer();
 renderer.setSize( window.innerWidth, window.innerHeight );
 document.body.appendChild( renderer.domElement );
 
 
//Controls 
 const controls = new OrbitControls( camera, renderer.domElement );
 
controls.maxPolarAngle = Math.PI / 2;
/**
 * Animate
 */
 
const clock = new THREE.Clock()
 
 
 
const tick = () =>
{
 
    const elapsedTime = clock.getElapsedTime()
 
    // Update objects
    //sphere.rotation.y = .5 * elapsedTime
 
    // Update Orbital Controls
     controls.update()
 
    // Render
    renderer.render(scene, camera)
 
    // Call tick again on the next frame
    window.requestAnimationFrame(tick)
}
 
tick()
Итог:
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2021, 19:48
Ответы с готовыми решениями:

Реализация Шума Перлина на PascalABC
Пытаюсь реализовать Шум Перлина на паскале ABC. И хотелось бы добиться этого . Но у меня получается только это: . Вот код: ...

Как использовать функцию шума Перлина?
Доброго времени суток. Пытаюсь понять как использовать шум Перлина. После прочтения этой статьи https://habrahabr.ru/post/265775/ я...

Как сделать свою реализацию шума Перлина
Помогите пожалуйста. Уже второй день ищу как сделать свой Шум Перлина в юнити не используя Mathf.PerlinNoise(). Хочу сделать все сам с нуля...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.08.2021, 19:48
Помогаю со студенческими работами здесь

Создание ландшафта
Всем доброго времени суток. Господа и дамы, требуется помощь. Нужно создать ландшафт при помощи opengl своими руками. Под Linux именно,...

создание ландшафта
здравствуйте. необходимо создать ландшафт на delphi по имеющейся карте. при работе с маленькими картами это легко осуществимо с помощью...

Создание ландшафта
добрый день. 3ds max начала изучать недавно, поэтому заранее не судите строго. моя задача - создать 3d ландшафт некоторой местности....

создание ландшафта
Здравствуйте! хочу написать прогу для рисования ландшафта. Подскажите пожалуста с чего начинать изучал только паскаль

Создание ландшафта реальной местности
Создавала рельеф реальной местности в максе на основе изолиний. Сейчас создаю рельеф бОльшей местности, также по карте с изолиниями. Все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru