Работает ли текстурирование splatting с помощью трехслойной или трехмерной рамки рендеринга Javascript? Если да, я бы хотел увидеть пример, возможно, даже учебник по большой местности. Если он не работает, есть ли другой способ отображения больших ландшафтов? Спасибо.Разметка текстуры с помощью Three.js
ответ
Решение принято!
Во-первых, вы можете написать вершинный шейдер, который принимает изображение в градациях серого и использует его как карту высот, и включает в себя изменяющийся поплавок (ниже - vAmount
), чтобы передать фрагментарный шейдер, чтобы определить текстуру (ы) для отображения (смесь) в этот момент.
uniform sampler2D bumpTexture;
uniform float bumpScale;
varying float vAmount;
varying vec2 vUV;
void main()
{
vUV = uv;
vec4 bumpData = texture2D(bumpTexture, uv);
vAmount = bumpData.r; // assuming map is grayscale it doesn't matter if you use r, g, or b.
// move the position along the normal
vec3 newPosition = position + normal * bumpScale * vAmount;
gl_Position = projectionMatrix * modelViewMatrix * vec4(newPosition, 1.0);
}
Далее идет фрагмент шейдера, который может включать в себя, однако многие текстуры, необходимые для различных возвышений, и есть большая встроенная функция называется smoothstep
, что делает плавные переходы гораздо проще вычислить.
Пример кода для такого фрагмента шейдер:
uniform sampler2D oceanTexture;
uniform sampler2D sandyTexture;
uniform sampler2D grassTexture;
uniform sampler2D rockyTexture;
uniform sampler2D snowyTexture;
varying vec2 vUV;
varying float vAmount;
void main()
{
vec4 water = (smoothstep(0.01, 0.25, vAmount) - smoothstep(0.24, 0.26, vAmount)) * texture2D(oceanTexture, vUV * 10.0);
vec4 sandy = (smoothstep(0.24, 0.27, vAmount) - smoothstep(0.28, 0.31, vAmount)) * texture2D(sandyTexture, vUV * 10.0);
vec4 grass = (smoothstep(0.28, 0.32, vAmount) - smoothstep(0.35, 0.40, vAmount)) * texture2D(grassTexture, vUV * 20.0);
vec4 rocky = (smoothstep(0.30, 0.50, vAmount) - smoothstep(0.40, 0.70, vAmount)) * texture2D(rockyTexture, vUV * 20.0);
vec4 snowy = (smoothstep(0.50, 0.65, vAmount)) * texture2D(snowyTexture, vUV * 10.0);
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0) + water + sandy + grass + rocky + snowy;
}
Затем вы можете использовать THREE.ShaderMaterial
использовать это для данной сетки. Приведенный выше код реализован на http://stemkoski.github.io/Three.js/Shader-Heightmap-Textures.html и производит результат:
Надеется, что это поможет вам начать работу. Счастливое кодирование!
Спасибо, я попробую. – Gugis
спасибо за это! – RekindledPhoenix
- 1. Использование видео как текстуры с помощью Three.js
- 2. Загрузите текстуры DDS с помощью Three.js SceneLoader
- 3. Three.js - текстуры не загружаются
- 4. three.js дополнительный цвет текстуры
- 5. Three.js - проблемы с размером текстуры
- 6. Текстуры черные в Three.JS
- 7. Поворот сфера текстуры Three.js
- 8. Three.js Cube различные текстуры
- 9. Проблемы текстуры Three.js JSONLoader
- 10. Обновление текстуры в three.js
- 11. Экспорт текстуры Colada для Three.js
- 12. Вращающиеся текстуры с использованием холста с помощью Three.js
- 13. Сдвиг текстуры на сфере Three.js
- 14. Three.js Объединить объекты и текстуры
- 15. Фиксированный размер текстуры в Three.js
- 16. three.js Collada текстуры не загружая
- 17. Three.js прозрачность модели текстуры ошибка
- 18. three.js earth не загружает текстуры
- 19. Пользователь загрузил текстуры в three.js
- 20. Форма экструзии текстуры в three.js
- 21. Как заменить текстуры, импортированные Collada, с помощью ShaderMaterial в Three.js?
- 22. Можете ли вы использовать необработанные текстуры WebGL с помощью three.js
- 23. Как я могу предварительно загрузить текстуры с помощью Three.js?
- 24. Текстуры Three.js загрузка как черный
- 25. getimagedata() для текстуры частиц three.js
- 26. Three.js неправильно текстуры на ShaderMaterial
- 27. Загрузка случайной текстуры в three.js
- 28. Видео текстуры в Three.js с Google Картоном
- 29. текстуры повторить с ShaderMaterials в three.js
- 30. Как получить гладкие/однородные текстуры в Three.js
Существует некоторая взаимосвязанная информация по адресу: http://www.chandlerprall.com/2011/06/blending-webgl-textures/ –