关于单个模型切片

2023-11-14

这几天鼓捣了模型切片,遇到好多坑。特此记录。

1,切片切什么?

切的是模型,模型可以通过Nodevisitor转换为geode,而geode可以分为若干drawable,切的就是这些drawable。因此,要node->accept(visitor),在void apply(geode)里面写

如果是多个模型,则切的是整体空间,

2,如何切

这些drawable可以分为geometry,按照包围盒四叉树或者八叉树分。最后一级为geode,其余各级是PagedLod。

可以每个drawable一个文件夹,也可以按照总的包围盒把每个级别放到一个文件夹。

3,输出什么?

根据递归,生成一个group,group->addchild()各下层,不输出叶子节点。即只生成writeNode(group,theFileName),四叉树有4个孩子,八叉树有8个孩子。

不输出叶子节点的原因是,假设第n层是叶子节点,已经在n-1层的group里面写了。

4,各层Pagelod如何设置

本质是离得越近,越清楚,

如果中心模式是像素模式,则要把setrange设为大于某阈值,即pagedLod->setRange(0,阈值,无穷大或某个很大的值)因为越近像素才大;

同样,如果中心模式为离视点模式,则setrange设为(0,0,阈值)。

即,离视点越近,像素越大,所以这两种模式的阈值范围要相反。

第一个参数设置为0,是假设这个pagedLod->setFileName(0,theFileName) 这个theFiledName是本级的输出文件名称。由于是级别之间环环相扣,所以是相对路径。毕竟,这些切片要放在任意电脑的任意位置。

即,可以输出文件的本级是一个pagedLod,本级输出文件是一个group,

5,如何找模型的三角面。

感谢博主@MeteorChenBo,链接在https://blog.csdn.net/qq_31709249/article/details/94357183

对点和三角形的关系,索引缓冲区查找,写的很清楚。但是纹理坐标不对。只能用索引缓冲区。

6,八叉树何时结束,

参照osgCookbook,其实就是一个递归。直到某个最大级数,或者包围盒大小不超过某个阈值,或者包围盒内的三角形个数不超过一个阈值,此时递归结束。

当然,也可以自定义任何可以收敛的条件,总之,不能无限递归下去。

7,叶子节点如何设置

判断该三角形中心点是否在包围盒,把在该包围盒里的三角面数组用triangles模式,组成geode

8,如何加载

直接用osg::ref_ptr<osg;:Node> node = osgDB::readNode(第0级根文件),root->addChild(node)即可。

9,纹理问题

模型是有纹理的,这个在apply(StateSet)里写,

每个Stateset里包含texture,texture又和Image相关,从image里,又可以获取图片名称,从osg低版本源码上看,每个Image只有一个图片,

总之,

各层是环环相扣的。因为在pagelod->setFileName()中已经写好了所以只要加载根文件即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于单个模型切片 的相关文章

  • edl后变暗后的解决方法

    由于edl类似于ssao 会变暗 这时候调整亮度时 可以类似于hdr 高动态范围转LDR 只是不色调映射就可以了 rgb各分量同时提高同一个比例即可 这样既可以变亮且不溢出 也可以不改变颜色 当然 可能会出现类似于深绿变浅绿的现象 但是视觉
  • 通过FXmlFile构建xml时,注意xml规范

    直接说问题 构建xml时 用 FXmlFile dependencyXMLFile new FXmlFile dependencyXML EConstructMethod ConstructFromBuffer 失败 原因时 构建depen
  • UE中FRotator和Pitch(Roll,Yaw)以及相对朝向的关系

    前几天 看人宅的塔防视频教程 他使用了塔的成员变量rotator 我可能在哪里少写了 所以 老是朝向不对 跟踪调试了下 发现FRotator是由pitch roll yaw三个部分组成 而pitch roll yaw是局部坐标系中的朝向 那
  • 将pbr移植到osg中的需要注意模型法线

    在pbr移植到osg中时 有时发现发黑 原因是光线方向和模型方向相反 在max dot N L 0 计算是 自然就是0了 也很简单 取绝对值即可 即 改为max abs dot N L 0 虽然不一定正确 但是效果起码出来了 另外 传递浮点
  • qt启动后检测u盘插入和拔掉

    工作中 需要检测u盘的插入和拔掉 其余逻辑可以简化 查了半天 感谢 q62290798 链接在 https blog csdn net q62290798 article details 115869367 utm medium distr
  • 解决qt里面添加的信号与槽不起作用的办法

    今天 在qt界面上新加了个checkbox 再加上信号与槽 发现竟然没响应 以前遇到过这个问题 没记录下来 其实很简单 把断点放在起作用的slot里面 发现它的前一步是类名 qt static metacall 而这个断点在Moc 类名 c
  • vs+qt添加qtOpengl时,要小写

    奇怪了 一开始添加模块时 写成了Opengl 是qmake错误 改成opengl就可以了
  • ue4蓝图中的customevent和function的细微差别。

    在调用第三方库时 我用customEvent时 可以调用LowEntryHttpRequest中的 Executes the request This blueprint can NOT execute several HTTP Reque
  • 在切瓦片时transform的包围盒会偏移一个位置,查看这个是否需要在坐标上减去该值,或者直接用tmspackage

    这个用apply transfrom 即可 因为transform后面addChild的是整个几何体 关键是如何判断整体的包围盒 所有的几何体包围盒 这样四叉树或者八叉树才行 如果说对单个模型的八叉树切片是对drawable的切片 那么多个
  • 关于ue4.27像素流送打包后的本地服务器问题

    我用4 27版本时 打包后老是出问题 只能用引擎的信令服务器 这怎么能行呢 不能把引擎放在服务器上吧 看了好多视频教程 发现有好几个run bat 而我只有一个run local bat 邪门了 后来在b站上 有人在评论区说了下 应该是4
  • 子关卡卸载actor不完全的问题解决。

    在子关卡中 actorA里面挂接n个actor 结果卸载actorA时 挂接的那些actor没有随之卸载掉 解决办法也简单 给这些actor设置owner为actorA即可 即在actorA所在的类里 生成这些挂载的actor时 FActo
  • cesium for unreal文档中的更新

    以前调试过cesium for unreal 再调试时一惊 发现api变了 静下心来思考流程 1 样本条要放在actor里 2 包含样本条的actor坐标放在原点 3 样本条坐标和法向量都要从经纬高到ue空间转换 变的只是api 所以深入了
  • cesium for ue5中actor的cesium georeference组件的改变(英文教程文档是更新了的)

    今天 重新回顾下cesium for ue的教程 actor添加cesium georeference组件 发现在ue5中 没有这个组件了 忍住卸载ue5 重新安装ue4 27的冲动 cesium的组件数量增多了 反而功能减少了 不可能 绝
  • 解决vs2015update3无法更新的问题

    解决方法很简单 直接去微软官方网站下载社区版 免费 网上其他地方的都是有问题的 官方网站下载下来是7个G 而其他地方下载是3个G 还缺少很多东西 链接https my visualstudio com Downloads q visual
  • 点云渲染的颗粒感和背景色相关

    很奇怪 在加alpha通道时 当背景是黑色时 黑色点云特别显示颗粒感 而背景色是灰色偏白时 颗粒感消失 看来是审美观很重要啊
  • 关于单个模型切片

    这几天鼓捣了模型切片 遇到好多坑 特此记录 1 切片切什么 切的是模型 模型可以通过Nodevisitor转换为geode 而geode可以分为若干drawable 切的就是这些drawable 因此 要node gt accept vis
  • ue4中Pak文件中挂载的资源名称获取

    在pak文件中 会挂接很多资源 api也在变化 废话不多说 上代码 FPakPlatformFile GetPakPlatformFile FPakPlatformFile pakPlatformFile nullptr auto plat
  • ue中的经纬高转xyz的问题

    在ue中 做了个地球仪 发现经纬度转地心坐标系老是出问题 后来发现 是转ue时 x y坐标要互换 也对 因为在cesium for unreal中还有一系列ecef转ue的相关函数 即下面的代码中 xy需要互换 在ue中才能正常使用 偏心率
  • osg orbitManipulator拖拽位置不精确的问题解决。

    实际上 就是个焦距和视距的问题 摄像机在不同的位置 远近切面会改变 但是fovy和aspectRatio不改变 这样 也会导致近切面的宽高发生改变 就类似于一个无限延伸的视锥体滑梯 远近切面就在这滑梯上滑动 由于最终物体要投影到近切面 而近
  • cesium加载影像的问题解决

    我用gdal把web墨卡托转为经纬度 再切分片时 发现对不上影像 经过两天排查 发现竟然是前端写错 viewer scene imageryLayers addImageryProvider new Cesium UrlTemplateIm

随机推荐

  • matplotlib绘图

    孤影常伴灯 你在夜里写字 我在昏黄中布景 风吹皱那烟波浩渺的迷离 也想吹散关于你的记忆 你在红尘打坐 我在紫陌修佛 万般皆因果 何须嗔叹 闲来无事 索然无趣 忽而兴起 画几个简单的数据分析图 一 将数据生成柱状图 代码 coding utf
  • 【计算机网络】TCP/IP网络模型里这些问题你会吗

    零 为什么需要有TCP IP网络模型 不同设备的进程之间相互通信 需要网络通信 而设备存在多样性 需要兼容各种设备 从而协商出一套通用的网络协议 并且这个网络协议是分层的 每层都有各自的作用和职责 一 最上层是哪层 应用层 1 该层有哪些协
  • SQL 经典面试题:统计最近七天连续三天活跃的用户

    1 需求 给定 mid dt 的用户登录记录表 查找最近 7 天内连续 3 天活跃的用户 id 2 数据表 tmp table tmp login test CREATE TABLE tmp table tmp login test mid
  • 5G UE测量

    目录 系列文章目录 一 为何干测量 二 测量干了啥 三 何时干测量 四 用啥干测量 五 怎么干测量 如 以上就是今天要讲的内容 本文仅仅简单从缘由 结果 时机 原料 过程五个方面概述了5G UE测量大至的来龙去脉 一 为何测量 移动 性管理
  • 【hello Linux】进程信号

    目录 1 进程信号的引出及整体概况 2 信号的产生 1 键盘产生 2 进程异常 3 系统调用 4 软件条件 3 信号的保存 1 信号相关的常见概念 2 sigset t 3 信号集操作函数 4 sigprocmask 对block位图的操作
  • 5.4双积分ADC工作原理

    文章目录 1 高中几个知识点 exp n log n lgx lnx 电容充放电公式 2 双积分型ADC工作原理 3 SAR和 型模数转换器 ADC 1 高中几个知识点 exp n exp函数即指数函数 e的n次方的函数 自然常数e 2 7
  • Java 异常创建及控制

    最近在重新拾起Java 想开始分享一些自己的表达 就从这里开始了 Java中有一个Throwable类 它是所有异常或者说是违例的基础 包括了两种类型的异常 一种叫Error 表示的是编译器和系统错误 我们通常不需要去在意它们 另一种叫Ex
  • 国产版ChatGPT大盘点

    我们看到 最近 国内大厂开始密集发布类ChatGPT产品 一方面 是因为这是最近10年最大的趋势和机会 另一方面 国内的AI 不能别国外卡了脖子 那在类ChatGPT赛道上 哪些中国版的ChatGPT能快速顶上 都各有哪些困境需要突破呢 本
  • 第七周作业1

    1 调试分析课本每一个例题 有可能的话更改成2 3个方法的新程序 2 编程实现课本每一个编程习题 例5 1 include
  • LSM-Tree

    LSM Tree的设计思路是 将数据拆分为几百M大小的Segments 并是顺序写入 它的核心思路其实非常简单 就是假定内存足够大 因此不需要每次有数据更新就必须将数据写入到磁盘中 而可以先将最新的数据驻留在内存中 等到积累到最后多之后 再
  • 递归与迭代

    迭代 迭代 迭代简单来讲就是循环 类比于我们循环输出某一个字符数组时的情景 从字符数组中不断取出字符 再将字符输出 迭代的循环过程则是从栈 或者队列 中不断取出要操作的元素 进行操作 与普通循环过程不同的是在不断取出元素的同时也会向栈中放入
  • Java8中Collectors的使用

    前言 基本类型的流没有这个用法 文章目录 averagingDouble averagingInt averagingLong collectingAndThen counting groupingBy groupingByConcurre
  • IRQ和FIQ中断的区别

    FIQ和IRQ是两种不同类型的中断 ARM为了支持这两种不同的中断 提供了对应的叫做FIQ和IRQ处理器模式 ARM有7种处理模式 一般的中断控制器里我们可以配置与控制器相连的某个中断输入是FIQ还是IRQ 所以一个中断是可以指定为FIQ或
  • Mac下如何降级Java、卸载Java

    前言 安装一些组件或插件时 有时会提示错误 What went wrong Could not determine java version from 11 查看组件或插件对应的Java版本会发现 可能只支持 Java 8 但本地安装的Ja
  • 《网络安全》零基础教程-适合小白科普

    网络安全 零基础教程 目录 目录 网络安全 零基础教程 第1章 网络安全基础 什么是网络安全 常见的网络安全威胁 网络安全的三个基本要素 网络安全的保障措施 第2章 网络攻击类型 病毒 蠕虫 木马 后门 DoS DDoS攻击 SQL注入 X
  • Java入门项目——读书管理系统

    Java简单实现读书管理系统 一 前言 二 思路及整体框架 三 代码展示 1 有关读书包 Book 2 有关用户包 3 有关操作书的包 一 前言 相信有很多小伙伴学习完了 JavaSE 基础语法 想知道自己到底学的怎么样 或则学完不知道这么
  • 使用RT-Thread studio 把LVGL移植到RT-Thread 上

    使用RT Thread studio 移植 LVGL到RT Thread中 其实RT Thread 移植LVGL 官方已经出来很多教程 但是但是他出的教程都是基于一些他们适配的BSP 但是其他不适配的怎么办呢 当然是手搓了 前期准备 1 在
  • 深入理解Golang之Map

    目录 写在前面 哈希表 如何解决哈希冲突的问题 1 链表地址法 2 开放地址法 开放地址 线性探测法 开放地址 平方探测法 开放地址 双哈希 Go Map实现 map数据结构 map的结构体为hmap bmap结构体 map的桶 Map扩容
  • 【使用JMeter 对Web服务器压力测试】

    自己使用JMeter测试百度心得 主要用到了 1 添加线程组 一个测试的线程容器 可设置线程个数 循环次数 所有线程启动一次的周期时间 2 在线程组 中添加sample gt http request 一个请求的范式 可以设置请求的url和
  • 关于单个模型切片

    这几天鼓捣了模型切片 遇到好多坑 特此记录 1 切片切什么 切的是模型 模型可以通过Nodevisitor转换为geode 而geode可以分为若干drawable 切的就是这些drawable 因此 要node gt accept vis