CSDN真恶心

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

因为手中缺乏折纸的数据结构,所以只好用我自己的导航立方体来研究下ogre的拾取问题

昨天重写了Cube,现在通过使用面索引点的方式来储存数据

# point list
PL = [[-20, 20, 20], [-20, -20, 20], [20, -20, 20], [20, 20, 20],
[-20, 20, -20], [-20, -20, -20], [20, -20, -20], [20, 20, -20]]
# index list /ft/bk/lt/rt/up/dn
IL = [[0,1,3], [3,1,2],
[7,6,4], [4,6,5],
[4,5,0], [0,5,1],
[3,2,7], [7,2,6],
[4,0,7], [7,0,3],
[1,5,2], [2,5,6]]
# height light index list
HIL = [[0,1,3,2], [7,6,4,5], [4,5,0,1],
[3,2,7,6], [4,0,7,3], [1,5,2,6]]
# texture coordinates list
TC = [[[0.6667, 0], [0.6667, 1], [0.8333, 0]],
[[0.8333, 0],[0.6667, 1], [0.8333, 1]],
[[0.833, 0], [0.833, 1], [1, 0]],
[[1, 0], [0.833, 1], [1, 1]],
[[0.3333, 0], [0.3333, 1], [0.5, 0]],
[[0.5, 0], [0.3333, 1], [0.5, 1]],
[[0.5, 0], [0.5, 1], [0.6667, 0]],
[[0.6667, 0], [0.5, 1], [0.6667, 1]],
[[0, 0], [0, 1], [0.1667, 0]],
[[0.1667, 0], [0, 1], [0.1667, 1]],
[[0.1667, 0], [0.1667, 1], [0.3333, 0]],
[[0.3333, 0], [0.1667, 1], [0.3333, 1]]]

 

另外今天中午和徐小孟讨论了一下关于折纸逻辑层的数据结构应该怎么处理

徐小孟找到了一篇关于折纸的论文:http://www.om.sist.chukyo-u.ac.jp/main/research/origami/journal/jvca.html

下面是我和徐小孟交流的一些记录:

屠文翔  15:31:28
师兄我跟你描述一下我这边的需求吧
徐小孟 15:31:36
恩,好的。。
我想根据这篇文章把我的数据结构重做
屠文翔 15:32:19
恩恩,我先把需求明确了就免得走弯路了
徐小孟 15:32:26
恩,好的。。
你说
屠文翔 15:32:29
首先我高亮的话肯定是高亮逻辑上的点,面和边
高亮渲染三角形是没有意义的
徐小孟 15:32:44
恩,
然后
屠文翔 15:33:00
所以实际上我拾取的是逻辑上的单元,那这个计算量就急剧下降了
徐小孟 15:33:28
基本的鼠标操作
1,拾取一个顶点
2.移动一个拾取的顶点
3释放拾取的顶点
取线上一点就做bending
屠文翔 15:34:09
我的搜索步骤是
1先判断鼠标是不是在一个逻辑面内
2判断鼠标是不是靠近一条逻辑边
3判断鼠标是不是靠近一个逻辑点
徐小孟 15:34:24
恩,这个是拾取逻辑

主要还是这两种吧。。
屠文翔 15:34:49
这就要求树的基本节点是面了~
这是我的第一点需求~
徐小孟 15:35:14
你看到图了么
屠文翔 15:35:17
看到了
徐小孟 15:35:20
你怎么取折线
屠文翔 15:35:35
那是算法问题了,我现在只是要结构
徐小孟 15:35:39
恩,好的
那先放下。。
你继续
屠文翔 15:36:13
然后就是,为了判断我是否在一个逻辑面内,我需要知道组成这个逻辑面的几个逻辑点的位置
徐小孟 15:36:26
记下了
这个在我现在的数据结构里面有
屠文翔 15:36:36
而这个位置却是渲染顶点的位置了
恩恩
徐小孟 15:36:52
然后?
屠文翔 15:37:01
所以我感觉逻辑层和渲染层一个最关键的联系就是这些
逻辑点,和它们所对应的渲染顶点
徐小孟 15:37:17
其实你不用考虑渲染层的东西
那个我会做算法去映射出来的
屠文翔 15:37:31
这些特殊的渲染顶点可以称为关键顶点了
徐小孟 15:37:37

只考虑关键顶点
逻辑顶点
有点乱
屠文翔 15:37:55
可是我总得知道他的渲染位置
徐小孟 15:37:57
其实渲染顶点就vertex
屠文翔 15:38:00
否则我如何做拾取呢
徐小孟 15:38:02
逻辑顶点就point
屠文翔 15:38:06
恩,好
这样,我要知道point的位置,才能做拾取
徐小孟 15:38:27
渲染位置不用需要知道吧
恩,对
知道point就行了
我保证数据中有point
屠文翔 15:38:44
而point的位置,刚好就是它所对应的关键vertex的位置
徐小孟 15:38:48
point做成tuple
恩,所有vertices用point去算
屠文翔 15:39:13
或者你确保你在point的数据结构里面有储存关于它的位置信息就好
徐小孟 15:39:28
恩,我也才找到那篇文章
我再看下这个文章
修正数据结构先
屠文翔 15:39:43
还有就是关于拾取的,其实有三个选择
1.由鼠标做射线映射到3D,然后在3D中判断
2.由3D映射到屏幕坐标,然后在2D中判断
屠文翔 15:40:50
3.用特殊的颜色信息标记每一个面,把他们渲染到texture里面,通过hittest判断
徐小孟 15:41:26
感觉第一种靠谱
个人感觉
屠文翔 15:41:35
我的第三个需求是,希望你能够结合自己的结构,考虑一下用哪种好,
徐小孟 15:41:45
恩 ,好的
屠文翔 15:41:52
并且改进自己的结构使之适应其中的一种
徐小孟 15:41:56
我先考虑下。。

这部分我来考虑。。你们先做做别的哈
我的数据需要重做
屠文翔 15:43:25
恩恩

 

今天下午先继续研究一下令人蛋疼的四元数,我对ogre里面对旋转的处理机制还真是一知半解


posted on 2012-02-05 16:05  Kid桑  阅读(274)  评论(0编辑  收藏  举报