VOP | Point Cloud

目录

Point Cloud Open —— 打开点云文件并搜索源位置周围的点

Point Cloud Find —— 返回最近点的点号列表

Point Cloud Find Radius —— 返回最近点的点号列表并考虑被搜索点的半径

Point Cloud Filter —— 过滤查询到的点以生成加权值

Point Cloud Farthest —— 查找最远点距离

Point Cloud Iterate —— 前进到下一迭代点

Point Cloud Import —— 在pcunshaded或pciterate循环内导入点数据

Point Cloud Import by Index —— 在pcunshaded或pciterate循环内导入点数据

Point Cloud Num Found —— 返回搜索到的点总数

Point Cloud Export —— 在pcunshaded循环内导出点数据

Point Cloud Unshaded —— 前进到下一unshaded迭代点

Point Cloud Close —— 关闭由pcopen打开的句柄

Point Cloud Write —— 将写出数据到点云文件


Point Cloud Open —— 打开点云文件并搜索源位置周围的点

        打开点云文件(.pc)并排队访问点(以某位置为中心),底层调用的是pcopen函数;

  • handle,点云句柄(将作为pcfilter或pciterate等的输入);

  • file,待加载文件的名字(点云文件使用.pc扩展名,也可加载几何体文件作为点云);
  • pchannel,通道名(包含将被搜索的位置);
  • P,查询位置(将从此位置搜索文件中的点);
  • nchannel,可选的法线通道(限制搜索点的法线与之对齐);
  • N,查询法线(搜索点需符合dot(N, Npoint) > cos(cone),即可认为是夹角);
  • radius,最大搜索半径(如事先知道搜索半径,指定此值以加速);
  • maxpoints,搜索最大的点数;
  • preload,在执行搜索前是否加载整个点云文件,关闭会降低性能但可提高内存使用率;

Point Cloud Find —— 返回最近点的点号列表

        打开几何体文件并返回点列表(在P位置的radius半径内),对应pcfind函数;

i[]@pts = pcfind(1, 'P', @P, ch('radius'), chi('maxpoints'));

Point Cloud Find Radius —— 返回最近点的点号列表并考虑被搜索点的半径

        打开几何体文件并返回点列表(在P位置的radius半径内),每个被搜索点会被指定半径属性扩展,对应pcfind_radius函数;如指定半径属性不存在,则等价于pcfind;

i[]@pts = pcfind_radius(1, 'P', 'pscale', 1, @P, ch('radius'), chi('maxpoints'));

Point Cloud Filter —— 过滤查询到的点以生成加权值

         过滤由pcopen查询到的点,以生成加权值,对应pcfilter函数;

//maxd最远点,w_i是距离d_i处给定点的权重
//距离越近权重越高
w_i = 1-smooth(0, maxd*1.1, d_i);

Point Cloud Farthest —— 查找最远点距离

         返回最远点距离,对应pcfarthest函数;

Point Cloud Iterate —— 前进到下一迭代点

        既可开始一个点迭代或前进到下一迭代点,通常作为while循环的条件输入,在循环体内使用Point Cloud Import来获取迭代点信息,对应pciterate函数;

        通常应遍历所有点,如未迭代所有点,在shader内执行其他操作前,应使用Point Cloud Close关闭点云;

//帮助案例由vop改为vex
int handle = pcopen(1, 'P', @P, 10, 50);

int condition = 1;
float constant = 0;
int condition2 = -1;

while(condition)
{
    condition = pciterate(handle); //迭代成功返回1
    if(condition)
    {
        float data;
        pcimport(handle, 'check', data); //获取搜索点的信息        
        constant += data;
    }
    condition2++;    
}

@Cd = constant/condition2;

Point Cloud Import —— 在pcunshaded或pciterate循环内导入点数据

        在pcunshadedpciterate context内导入点信息,返回的数据应与当前迭代点对应;pcimport应仅与点云迭代一起使用,对应pcimport函数;

两个特别的通道名

  • point.number,点号;
  • point.distance,距离,仅在unshaded points下有效;

Point Cloud Import by Index —— 在pcunshaded或pciterate循环内导入点数据

        从pcunshadedpciterate context内导入点信息,返回指定索引的数据;通过使用此节点和Point Cloud Num Found,可使用For遍历所有点,对应pcimportbyidx*函数;

  • idx,指定搜索的哪个点(0~pcnumfound()-1);

两个特别的通道名

  • point.number,点号;
  • point.distance,距离,仅在unshaded points下有效;

Point Cloud Num Found —— 返回搜索到的点总数

        返回由pcopen查找到的点总数;

Point Cloud Export —— 在pcunshaded循环内导出点数据

        在Point Cloud Unshaded context内导出点信息,返回的数据应与当前迭代点对应;一旦为给定迭代点导出了数据,该点就再也不会被pcunshaded循环处理;pcexport只能与pcunshaded循环一起使用,否则其行为将是未定义的;通道名应与提供给pcunshaded循环的通道匹配,通道不应已存在于点云文件中;对应pcexport函数;

Point Cloud Unshaded —— 前进到下一unshaded迭代点

        既可开始一个新unshaded点迭代或前进到下一unshaded迭代点;unshaded迭代与迭代不同,点仅被迭代一次,因此每个点的计算可以执行一次并过滤多次;通常应用作while循环条件的输入,在循环体内使用Point Cloud Import来获取迭代点信息,Point Cloud Export来存储shaded信息;对应pcunshaded函数;

        通常应遍历所有点,如未迭代所有点,在shader内执行其他操作前,应使用Point Cloud Close关闭点云;

int handle = pcopen(texturename, "P", P, maxdistance, maxpoints);
while (pcunshaded(handle, "irradiance"))
{
    pcimport(handle, "P", cloudP);
    pcimport(handle, "N", cloudN);
    ir = computeIrraciance(cloudP, cloudN);
    pcexport(handle, "irradiance", ir);
}
pcfilter(handle, radius, "irradiance", ir);

Point Cloud Close —— 关闭由pcopen打开的句柄

        关闭由pcopen打开的句柄,以便该句柄不在被其他点云节点使用;通常没有必要使用,但如果迭代部分点,可能需要使用该节点以避免在shader计算期间出现警告;

Point Cloud Write —— 将写出数据到点云文件

        最多两个label/value,写出数据;点云文件可用于计算subsurface scattering,ambient occlusion,及indirect diffuse;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/702743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第二证券股市资讯:半导体,突发!

半导体又现突发! 商场忽然传出,拜登政府正在考虑约束我国获取应用在人工智能(AI) 芯片上的全栅级晶体管技能(Gate-all-around, GAA) ,但不过现在还不清楚美国官员何时会做出最终决议。从趋势来看,这意味着…

【Ardiuno】实验ESP32单片机自动配置Wifi功能(图文)

这里小飞鱼按照ESP32的示例代码,实验一下wifi的自动配置功能。所谓的自动配置,就是不用提前将wifi的名称和密码写到程序里,这样可以保证程序在烧录上传后,可以通过手机端的软件来进行配置,可以避免反复修改代码&#x…

【产品经理】ERP对接电商平台

电商ERP对接上游平台,会需要经历几个步骤环节,包括店铺设置等。 电商ERP对接上游电商平台,其主要设置为店铺设置、商品同步、库存同步,本次讲解下店铺设置应该如何进行设置,以及在设置过程中的可能出现的踩坑事项。 …

JAVA面试题:Redis分布式锁

Redis分布式锁 分布式锁使用的场景 集群情况下的定时任务,抢单,幂等性等场景 抢券场景 查询库存 -> 扣减库存 多个并发线程同时查询库存,出现超卖问题 添加互斥锁 所有线程执行操作之前必须尝试获取锁 保证一次只有一个线程能走查询库存->扣减库存的流程 Redis分…

物业管理的隐形杀手:纸质点检表,你还在用吗?

在日常的生活中,我们经常会看到小区物业保洁、客服人员在工作岗位忙忙碌碌,但忽略了默默为我们提供舒适环境的“隐形守护者”——物业设施设备。然而,一旦这些设备出现故障,我们的日常生活就会陷入混乱。那么,如何确保…

Codesys中根据时间生成随机数字

一、 说明 LTIME()函数返回LTIME 时间类型数据 这个函数产生自系统启动以来经过的时间,以纳秒为单位,以扫描周期1ms为例,这个函数每次获得的纳妙数是随机的,没有规律。 二、作用 例如用来生成0到100的随机数,可以用L…

Keepalived LVS群集

一、Keepalived案例分析 企业应用中,单台服务器承担应用存在单点故障的危险 单点故障一旦发生,企业服务将发生中断,造成极大的危害 二、Keepalived工具介绍 专为LVS和HA设计的一款健康检查工具 支持故障自动切换(Failover&#…

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕

乡镇联盟一镇一码联合创始人第一届第二次研讨会在中山圆满落幕 近日,由“乡镇联盟一镇一码”项目的联合创始人余向强先生亲自主持的第一届第二次研讨会在中山成功举行。此次研讨会汇聚了来自全国各地的乡镇代表、行业专家及联盟核心成员,共同探讨乡镇发…

面向计算病理学的通用基础模型| 文献速递-视觉通用模型与疾病诊断

Title 题目 Towards a general-purpose foundation model for computational pathology 面向计算病理学的通用基础模型 01 文献速递介绍 组织图像的定量评估对于计算病理学(CPath)任务至关重要,需要从全幻灯片图像(WSIs&…

ITIL4背景下,ITSM产品应具备哪些特点?

点击进入IT管理知识库 随着信息技术的不断发展和普及,IT服务管理(ITSM)在企业中的地位日益凸显。而在ITIL4框架的指导下,ITSM产品的特点也随之发生了变化,更加注重灵活性、数字化和服务导向。本文将就ITIL4背景下&…

MemFire Cloud:为中国宝宝打造的一站式应用开发平台

在当今移动互联网时代,应用开发已经成为了许多企业和个人的迫切需求。然而,对于许多开发者来说,搭建服务往往是一个十分繁琐的过程,需要耗费大量的时间和精力。本文将带您探索应用开发前的繁琐之处以及如何通过MemFire Cloud轻松摆…

巴伦在接收链路中的应用

一、巴伦的定义 "巴伦"(Balun),是一种平衡-不平衡转换器,通常用于将平衡信号(如差分信号)转换为不平衡信号(如单端信号),或者反之。巴伦在无线通信、广播、天…

最新下载:CorelDraw 2023【软件附加安装教程】

简介: CorelDRAW Graphics Suite 订阅版拥有配备齐全的专业设计工具包,可以通过非常高的效率提供令人惊艳的矢量插图、布局、照片编辑和排版项目。价格实惠的订阅就能获得令人难以置信的持续价值,即时、有保障地获得独家的新功能和内容、一流…

【Uniapp】uniapp微信小程序定义图片地址全局变量

错误写法: main.js Vue.prototype.$imgUrl 图片地址这么写之后 就发现压根不起作用;获取到的是undefined 正确写法: 返回函数,后面可以拼上OSS图片完整路径 Vue.prototype.$imgUrl (url) > {return ("https://地址…

MySql 报错之 Truncated incorrect DOUBLE value: ‘111-7357916-9889033‘

1. 背景 查询sql时,出现报错:Truncated incorrect DOUBLE value: ‘111-7357916-9889033’ 2. 问题可能原因 2.1 数据类型不匹配 可能错误地将一个本应作为字符串处理的列或值用于了需要数值类型的计算或比较。检查SQL语句,确保数值类型…

【多线程】进程与线程

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 操作系统2. 进程2.1 进程是什么2.2 进程管理2.3 进程调度2.3 内存管理2.4 进程间通信 3. 线程3.1 线程是什…

计算机组成原理-流水CPU-指令流水

一、指令流水的定义 指令流水线是计算机处理器中的一种设计,用于提高指令执行的效率。考虑到执行指令的每个阶段用到的硬件不同,它将处理指令的各个步骤分解为若干个阶段,并允许多个指令在同一时刻在不同的阶段执行,从而实现指令…

目标检测6:采用yolov8, RK3568推理的性能

最近有个小伙伴,问我rk3568上推理图片,1秒能达到多少? 本次采用模型为yolov8s.rknn,作了一次验证。 解析一段视频文件,1280*720, fps 24。读取视频文件,然后进行推理。 通过性能优化,发现推理…

网络安全快速入门(十七)计划任务

17.1 前言 在上一章节我们简单了解了Linux软件管理的一些相关操作,而在这张内容,我们来讲一下计划任务!计划任务,本质上来说就是特定的时间执行一些命令,因此被称为计划任务,我们接下来就具体来了解一下吧&…

01-Java和Android环境配置

appium是做app自动化测试最火的一个框架,它的主要优势是支持android和ios,同时也支持Java和Python脚本语言。而学习appium最大的难处在于环境的安装配置,本文主要介绍Java和Android环境配置,在后续文章中将会介绍appium的安装和具…