news 2026/6/18 4:42:17

PerlinNoise Perlin噪声(PerlinNoise)隐式函数构建模型并渲染

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PerlinNoise Perlin噪声(PerlinNoise)隐式函数构建模型并渲染

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①柏林噪声的构建与渲染


二:代码及注释

import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkCommonDataModel import vtkPerlinNoise from vtkmodules.vtkImagingHybrid import vtkSampleFunction from vtkmodules.vtkFiltersCore import vtkContourFilter from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, \ vtkRenderer def main(): colors = vtkNamedColors() perlinNoise = vtkPerlinNoise() """ SetFrequency 设置在X,Y,Z方向上的重复频率 频率控制噪声的重复性和细节密度。 频率越高 → 噪声变化更快,细节更密集(像波纹更紧密的山脉) 率越低 → 噪声变化更缓慢,形成更大的起伏(像平缓的丘陵) """ perlinNoise.SetFrequency(2, 1.25, 1.5) """ SetPhase 设置噪声在 X、Y、Z 方向上的相位偏移 相位的作用是:制噪声图案在各个方向上的“起始点”或“偏移量” 比如:SetPhase(0, 0, 0) → 默认起点 SetPhase(π, 0, 0) → 整个噪声在 X 方向上平移半个周期 """ perlinNoise.SetPhase(0, 0, 0) # 采样 sample = vtkSampleFunction() sample.SetImplicitFunction(perlinNoise) sample.SetSampleDimensions(65, 65, 20) # 定义了体数据网格的分辨率。这里创建了一个 65×65×20 的网格,每个网格点(体素)的值就是该位置 Perlin 噪声函数的输出值 sample.ComputeNormalsOff() # 表面重建 surface = vtkContourFilter() surface.SetInputConnection(sample.GetOutputPort()) surface.SetValue(0, 0.0) mapper = vtkPolyDataMapper() mapper.SetInputConnection(surface.GetOutputPort()) mapper.ScalarVisibilityOff() actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d('SteelBlue')) renderer = vtkRenderer() renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) interactor = vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # Add the actors to the renderer, set the background and size renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d('SlateGray')) renderWindow.SetWindowName('PerlinNoise') renderWindow.SetSize(300, 300) renderer.ResetCamera() renderWindow.Render() interactor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/16 12:10:44

Linly-Talker开源镜像部署指南(含GPU加速优化)

Linly-Talker开源镜像部署指南(含GPU加速优化) 在虚拟主播24小时不间断带货、AI客服秒回千条咨询的今天,数字人早已不再是科幻电影里的概念。但真正落地一个能“听懂、会说、表情自然”的实时对话系统,对大多数团队来说仍是不小的…

作者头像 李华
网站建设 2026/6/13 12:22:38

Linly-Talker支持异构计算,CPU+GPU协同推理

Linly-Talker支持异构计算,CPUGPU协同推理 在数字人技术快速落地的今天,用户早已不满足于“会动的头像”或“预录语音播报”。从虚拟主播到远程客服,人们对交互体验的要求正从“能用”迈向“好用”——低延迟、高自然度、个性化表达成为新标准…

作者头像 李华
网站建设 2026/6/9 19:54:36

Linly-Talker音频频谱可视化:调试语音合成质量的利器

Linly-Talker音频频谱可视化:调试语音合成质量的利器 在构建数字人系统时,你是否曾遇到这样的场景:语音输出听起来“怪怪的”——某个字突然消失、语调平得像念经、或是音色莫名失真?可当你想排查问题时,模型却像一个黑…

作者头像 李华
网站建设 2026/6/13 5:49:03

Linly-Talker语音中断恢复机制,确保对话连贯性

Linly-Talker语音中断恢复机制,确保对话连贯性 在虚拟主播流畅回应用户提问、数字客服耐心倾听复杂诉求的场景背后,一场关于“对话节奏”的技术博弈正悄然展开。人们早已不满足于AI只是“听完再说”,而是期待它像真人一样——能容忍停顿、理解…

作者头像 李华
网站建设 2026/6/15 13:15:40

Linly-Talker如何应对长文本输入?分段处理策略解析

Linly-Talker 如何应对长文本输入?分段处理策略解析 在数字人系统逐渐从实验室走向真实业务场景的今天,一个现实问题日益凸显:用户不再满足于“你好”“今天天气怎么样”这类简短交互,而是希望数字人能讲解一份万字白皮书、复述一…

作者头像 李华