Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有效地计算查看光线和一组对象之间的第一个交点的最佳方法是什么?

有效地计算查看光线和一组对象之间的第一个交点的最佳方法是什么?
EN

Stack Overflow用户
提问于 2009-01-31 02:09:54
回答 3查看 496关注 0票数 3

例如:

一种有效地计算观察光线和一组三个对象(一个球体、一个圆锥体和一个圆柱体(其他3D图元))之间的第一个交点的方法。

EN

回答 3

Stack Overflow用户

发布于 2009-01-31 02:47:56

“计算效率”取决于集合的大小。

对于三个微不足道的集合,只需依次测试每一个,这真的不值得尝试优化。

对于较大的集合,请查看划分空间的数据结构(例如KD-树)。整个章节(甚至是整本书)都致力于这个问题。我最喜欢的参考书是An Introduction to Ray Tracing (版)。安德鲁。S. Glassner)

或者,如果我误解了你的问题,而你实际上是在询问特定对象类型的光线-对象相交的算法,请参阅同一本书!

票数 2
EN

Stack Overflow用户

发布于 2009-02-20 11:14:18

嗯,这取决于你真正想要做什么。如果你想要生成一个对简单场景中几乎每个像素都正确的解决方案,一个非常快速的方法是通过使用扫描转换将所有具有唯一识别颜色的对象预先渲染到背景项缓冲区(也称为z缓冲区),从而预先计算每个像素的“前面是什么”。这有时被称为项缓冲区。

使用该预计算,您就可以知道将拍摄到场景中的几乎所有光线都可见的内容。因此,光线与环境相交的问题将大大简化:每条光线都会命中一个特定的对象。

当我在做这个many years ago的时候,我正在制作公认简单的场景的实时光线跟踪图像。我已经有很长一段时间没有重温这段代码了,但我怀疑,使用现代编译器和图形硬件,性能会比我当时看到的要好几个数量级。

PS:我第一次读到item buffer的想法是在90年代初做文献搜索的时候。我最初是在(我相信)70年代末的一篇ACM论文中发现的。遗憾的是,我没有可用的源代码参考,但简而言之,这是一个非常古老的想法,在扫描转换硬件上工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2009-02-02 10:39:51

我假设您有一个射线d= (dx,dy,dz),从o= (ox,oy,oz)开始,并且您正在寻找参数t,使得交点p= o+d*t。(像this页面,它使用P2-P1表示d,P1表示o,u表示t)。

我要问的第一个问题是“这些对象是否相交”?

如果不是,那么你可以作弊一点,并按顺序检查光线碰撞。由于每帧有三个对象可能会移动,也可能不会移动,因此预先计算它们与相机的距离(例如,距离中心点)是值得的。按距离摄像机从小到大依次对每个对象进行测试。虽然空闲空间现在是渲染中最昂贵的部分,但这比仅对所有三个空间进行测试并取一个最小值更有效。如果你的图像是高分辨率的,那么这是特别有效的,因为你在像素数量上摊销了成本。

否则,对所有三个进行测试,并取最小值...

在其他情况下,您可能希望混合使用这两种方法。如果您可以按顺序测试其中两个对象,则可以这样做(例如,球体和立方体沿着圆柱形隧道移动),但测试第三个对象并取最小值以找到最终对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/498601

复制
相关文章
Hive左连接_oracle左外连接
大家好,又见面了,我是你们的朋友全栈君。 CREATE EXTERNAL TABLE IF NOT EXISTS a( telno STRING, other STRING ) PARTITIONED BY(day String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘|’;
全栈程序员站长
2022/10/02
1.3K0
mysql左连接和右连接_MYSQL 左连接与右连接
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
全栈程序员站长
2022/09/05
16.2K0
mysql左连接和右连接_MYSQL 左连接与右连接
HQL的左连接_左连接与右连接的区别
,但是默认使用的内连接,就是说外键必须匹配的记录才能查出来,实现不了要求。 当我决定用左连接查询之后,做了很多尝试,但是因为对HQL不够熟悉,都没有达到要求。比如这样的
全栈程序员站长
2022/09/29
1.3K0
ClickHouse左连接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/04
8720
ClickHouse左连接
mysql中左连接查询_mysql左连接「建议收藏」
查询语句开始 会根据 on后面的条件创建一张虚拟表,左边表是全部数据,右边表会根据on后面的条件进行筛选。
全栈程序员站长
2022/08/11
2.4K0
mysql数据库语句左连接_MySQL 左连接 右连接 详解
aID aNum bID bName
全栈程序员站长
2022/06/27
27.5K0
mysql 左连接 自连接 例子
逻辑:先通过左连接将看了湖南卫视和北京卫视的查出来,然后再将看了湖南卫视但不在刚才查出的结果中的用户查出来。
全栈程序员站长
2022/09/03
3.1K0
mysql 左连接 自连接 例子
左连接,右连接,内连接,外连接
这里之前一直没有写,主要原因觉得好多东西比较基础,没想都写,但是后来觉得,学习的话应该是扫盲和汇总的阶段,所以这里也单独写一下
名字是乱打的
2021/12/22
2.2K0
左连接,右连接,内连接,外连接
mysql左连接查询
左连接查询:以左表为主表,右表为从表,查询符合条件的数据 1.当右表中数据匹配不到时展示为空 例: 左表两条数据,按条件匹配到右表一条数据且匹配左表第一条,结果展示两条数据,且第二条数据右表中的字段全部为null 2.当匹配到右表的数据为多条时,左表数据会重复展示,不会自动合并 例: 左表数据一条,按条件匹配到右表数据三条,结果展示三条数据,左表数据均相同,右表数据不同
全栈程序员站长
2022/09/07
2.6K0
mysql连接查询(左连接,右连接,内连接)
以上就是MySQL 连接查询的资料整理,大家如有疑问可以留言讨论,共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
叫我可儿呀
2019/11/30
12K0
mysql连接查询(左连接,右连接,内连接)
内连接、左连接、右连接区别
`Aid` int(10) NOT NULL DEFAULT 1 COMMENT '主键' ,
一觉睡到小时候
2019/07/04
1.2K0
内连接、左连接、右连接区别
SQL查询左连接、右连接、内连接[通俗易懂]
1、左连接的定义:是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
全栈程序员站长
2022/07/22
7.8K0
SQL查询左连接、右连接、内连接[通俗易懂]
mysql左连接 右连接 内连接的区别[通俗易懂]
a表 id name b表 id job parent_id
全栈程序员站长
2022/09/05
2.7K0
Access/VBA/Excel-左连接-11
系统:Windows 7 软件:Excel 2010/Access 2010 这个系列开展一个新的篇章,重点关注Access数据库 主体框架:以Excel作为操作界面,Access作为数据库 今天讲讲如何将数据库中满足要求的数据拿出来 涉及知识:, Part 1:目标 成绩表 学生信息表 运行过程 获取学号为1101学生在不同年级的语文成绩,输出信息包括:姓名,学号,性别,年级,语文成绩 最终想要获得的信息来自于两个工作表,所以需要连接查询 逻辑过程 连接数据库 根据需求确定SQL语句 执行SQ
企鹅号小编
2018/01/10
1.1K0
Access/VBA/Excel-左连接-11
mysql左连接查询慢[通俗易懂]
之前一直用的Oracle,今天用mysql查询一个很普通的左连接的时候,发现速度很慢。 select x.fid,x.isbirt,x.fscoresum,x.fsystemscore,x.feffectivescore from tablea x left join tableb h on x.fitemid = h.fid where h.fprojectid=’’ 这个sql耗时:
全栈程序员站长
2022/08/31
2.8K0
mysql左连接查询慢[通俗易懂]
mysql左连接去重
create table TB_BATCH( ID int(11) not null auto_increment, BATCH_NO VARCHAR(32) comment ‘批次号’, CONTRACT_ID int(11) comment ‘合同ID’, CONTRACT_NO VARCHAR(64) comment ‘合同编号’, RULE_ID int(11) comment ‘规则ID’, CITY VARCHAR(64) comment ‘城市’, COMPANY_NAME VARCHAR(128) comment ‘企业名称’, SERVICE_ADDRESS VARCHAR(128) comment ‘上门地址’, EXP_DATE date comment ‘日期’, EXP_BEGIN_TIME time comment ‘开始时间’, EXP_END_TIME time comment ‘结束时间’, MASSAGIST_COUNT int(4) comment ‘技师数量’, STATUS VARCHAR(16) not null comment ‘状态:待分配、已分配、已确认、服务中、已完成、已取消’, OPERATOR varchar(30), CREATE_TIME datetime, MODIFY_TIME datetime, primary key (ID) );
全栈程序员站长
2022/09/06
1.2K0
mysql左连接去重
Mysql中外连接,内连接,左连接,右连接的区别
可能第一种通过where语句查询,大家都能理解. 但是不知道大家有没有去尝试过理解下面关于内连接与外连接查询方式的区别 ,接下来我们先通过一张图来演示一下连接的整个层级关系:
萌萌哒的瓤瓤
2021/01/13
4.6K0
Mysql中外连接,内连接,左连接,右连接的区别
SQL 内连接,外连接(左外连接、右外连接)
语句:select * from a_table a inner join b_table bon a.a_id = b.b_id;
birdskyws
2018/09/12
11.7K0
SQL 内连接,外连接(左外连接、右外连接)
Mysql—— 内连接、左连接、右连接以及全连接查询
语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;
全栈程序员站长
2022/08/10
4.3K0
Mysql—— 内连接、左连接、右连接以及全连接查询
点击加载更多

相似问题

三个表的左连接

21

三个表之间的左连接(带连接表)

12

PHP + mysql -左连接-三个表

30

三个表的左外连接

10

左外部连接(三个表之间的连接)?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档