P41: DISPLACEMENT & MICRO-DETAIL
Настоящий дисплейсмент: Adaptive Subdivision + 32 bit height + правильные настройки Cycles
📝 Промпты ⭐⭐⭐ 3 блоков кода обновлено 2026-10-01
ID: P41 | Кластер: Materials/Render | Сложность: ⭐⭐⭐ | Теги: #displacement #adaptive-subdivision #micro-detail #true-displacement #cycles
🎯 ЦЕЛЬ
Настоящий дисплейсмент: Adaptive Subdivision + 32-bit height + правильные настройки Cycles
📝 ПРОМПТ (РУС)
Настрой true displacement для "[OBJECT]":
Height map [путь], scale [S], midlevel [M].
Adaptive Subdivision: dicing rate [R]. Проверь силуэт на крупном плане.
📝 ПРОМПТ (ENG)
Setup true displacement for "[OBJECT]":
Height map [path], scale [S], midlevel [M].
Adaptive Subdivision: dicing rate [R]. Verify silhouette in close-up.
🔧 MCP: execute_blender_code
import bpy
def true_displacement(obj_name, height_img_path, scale=0.1, midlevel=0.5, dicing=1.0):
obj = bpy.data.objects.get(obj_name)
if not obj or obj.type != 'MESH':
raise ValueError("Mesh object required")
mat = obj.active_material
if not mat:
raise ValueError("Object has no material")
mat.cycles.displacement_method = 'BOTH'
nodes = mat.node_tree.nodes
links = mat.node_tree.links
tex = nodes.new('ShaderNodeTexImage')
tex.image = bpy.data.images.load(height_img_path)
tex.image.colorspace_settings.name = 'Non-Color'
tex.location = (-400, -300)
disp = nodes.new('ShaderNodeDisplacement')
disp.location = (-100, -300)
disp.inputs['Scale'].default_value = scale
disp.inputs['Midlevel'].default_value = midlevel
out = next(n for n in nodes if n.type == 'OUTPUT_MATERIAL')
links.new(tex.outputs['Color'], disp.inputs['Height'])
links.new(disp.outputs['Displacement'], out.inputs['Displacement'])
sub = obj.modifiers.new("AdaptiveSubdiv", 'SUBSURF')
sub.subdivision_type = 'CATMULL_CLARK'
sub.use_adaptive_subdiv = True
s = bpy.context.scene
s.cycles.feature_set = 'EXPERIMENTAL'
s.cycles.preview_dicing_rate = dicing
s.cycles.dicing_rate = max(0.5, dicing / 2)
return {"displacement": True, "scale": scale}
# true_displacement("Ground", "//textures/ground_height_4k.exr", scale=0.15)
📊 ПАРАМЕТРЫ
| Параметр | Значение | Зачем |
|---|---|---|
| Height map | 32-bit EXR | Без бандинга на плавных склонах |
| Scale | 0.05–0.3 | Реальная высота рельефа в метрах |
| Midlevel | 0.5 | Точка «ноль» (ниже — впадины, выше — выступы) |
| Dicing rate | 1.0 preview / 0.5 render | Детализация сабдива |
| Feature set | EXPERIMENTAL | Обязателен для adaptive |
⚠️ ОШИБКИ
| Ошибка | Решение |
|---|---|
| Плоский силуэт | Displacement method = Both/True, а не Bump Only |
| Взрыв геометрии | Scale слишком большой; проверь единицы midlevel |
| Шум/артефакты | Height в Non-Color, 32-bit, dicing меньше |
🔗 СВЯЗИ
- Прочие в категории «Промпты»: P48: EEVEE VS CYCLES DECISION, P09: PRINCIPLED BSDF SETUP, P10: NODE GROUP CREATION, P11: PROCEDURAL TEXTURES, P14: CAMERA & COMPOSITION
- По темам: CASE 03: PRODUCT VISUALIZATION, P22: PARTICLE SYSTEMS, P29: BATCH PROCESSING & CLI
- Теги: #adaptive, #adaptive-subdivision, #cycles, #displacement, #micro, #micro-detail, #prompt, #render, #shading, #true
Связанные материалы
Подобраны по тегам и категории.