VTK学习笔记九

VTK可视化之符号化

  • vtkGlyph3D是一个符号化的算法工具
  • vtkGlyph3D类可以创建一个具有大小、方向和颜色的符号,并支持图形缩放、着色、设置空间姿态等
  • 输入对象中的每个点都可以用符号来可视化
  • vtkGlyph3D 对象符号被配置使用点属性法矢量作为方向向量
  • 也可以使用SetVectorModeToUseVector()方法用矢量数据代替法矢量
  • 根据矢量值的大小,按比例绘制符号的大小。
  • vtkGlyph3D对象需要接受两个输入:几何数据点集合、Glyph图形数据(vtkPolyData数据)。几何数据点集合来自求完法向量的图像,Glyph图形数据用于在点集合处显示法向量。

Demo1 给符号标记颜色

  1. 创建点集
  2. 创建3维的unsigned char矢量数组
  3. 将点集设置给多边形数据集对象,并将属性数组设置为点集的属性
  4. 创建符号对象,设置符号形状数据,及被标记的多边形数据,关键点是按比例,标量或矢量/法向量的幅度值来设置符号的颜色SetColorModeToColorByScalar
  5. 设置符号的比例则需打开glyph3D->ScalingOff();并调用SetScaleModeToScaleByScalar
#include <vtkSmartPointer.h>
#include <vtkPointData.h>
#include <vtkCubeSource.h>
#include <vtkPolyData.h>
#include <vtkPoints.h>
#include <vtkGlyph3D.h>
#include <vtkCellArray.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkUnsignedCharArray.h>

int main()
{
	// 创建点集,用于被标记
	vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
	points->InsertNextPoint(0,0,0);
	points->InsertNextPoint(5,0,0);
	points->InsertNextPoint(10,0,0);

	// 创建一个三维的字符型标量数组
	vtkSmartPointer<vtkUnsignedCharArray> colors = vtkSmartPointer<vtkUnsignedCharArray>::New();
	colors->SetName("colors");
	colors->SetNumberOfComponents(3);//设置每个元素的维度
	colors->SetNumberOfTuples(3);//设置元素的个数
	unsigned char r[3] = {255,0,0};
	unsigned char g[3] = {0,255,0};
	unsigned char b[3] = {0,0,255};
	colors->SetTuple3(0,r[0],r[1],r[2]);
	colors->SetTuple3(1,g[0],g[1],g[2]);
	colors->SetTuple3(2,b[0],b[1],b[2]);
	
	/*
		// 创建一个一维的浮点型标量数组 -- 作为颜色属性
	vtkSmartPointer<vtkFloatArray> scales = vtkSmartPointer<vtkFloatArray>::New();
	scales->SetName("scales");

	scales-&
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值