这不是一个教程,这是一个我刚解决的问题,我觉得它是一个不错的范例,所以决定和大家分享一下经验.在遇到这种难题的时候我是怎么应对的.
对Maya或是其它3维软件熟悉的朋友应该都知道法线这个东西,它是个向量,它的方向代表了多边形面的正面的面向方向.
那么我们怎么能知道一个多边形面是正面向外还是向内呢?
1. 当然是先去查看命令稳当,看看Maya有没有提供相应的涵数来查询.
结果是只能得到面的法线向量.
2. 查看API,毕竟API提供更多的功能.
结果还是只能得到面的法线向量.
3. 好吧,Maya没提供更直接能用判断方法,这时我觉得只能依靠图形学算法了(听起来很难,的确是很难)
a. 我重新分析一下问题,法线的指向就是面的正面面向,那我只要能判断多边形的正反面是那一面就行了,于是问题变成了如何判断一个面大正反面.
b.从那里入手?当然是搜索引擎了.不过在这之前我已经知道一个最简单的判断方法,在Opengl中顶点逆时针的面是正面,而顺时针的是反面.我能使用这个方法么?我不知道Maya中是不是跟Opengl的标准一样是逆时针的面是正面,而且我还要自己去实现顶点是逆时针还顺时针的算法,有难度,也耗时间,于是这方向先放下.
c. google后,wiki的
Normal (geometry)给出了法线的计算方程式,很高兴又有新方向了,但在阅读了wiki后发现还是不懂怎么去运用这些方程式,而且也不是很明白.但我可以感觉到这是个能根治这问题的方向.
面对这些难题我我都是以类似上面的方式来进行的,不过在思考的过程中我有时会开小差,这只是我的个人习惯而已,因为我的经历告诉我,在面对很复杂的问题的时候很容易钻牛角尖,而利用偶尔开小差能让我暂时把注意力移开,让我能更全面的去分析问题以及各个方面的可能性.
最终第一天思考下来没什么进展,但就在我下班离开公司的路上,一个想法在脑海里闪过,今天在详细的分析当时的想法的可行性后就开始测试和构思新的解决方案.
分享到:
相关推荐
在给定的“lena-reversed.rar”压缩包中,我们探讨的是如何在MATLAB环境下对著名的Lena图像进行灰度反转。 首先,MATLAB是一种强大的数值计算和可视化工具,特别适合于图像处理任务。在MATLAB中,有一系列内置的...
#include "stdafx.h" #include "iostream" #include "fstream" #include "algorithm" #include "string" #include "vector" #include "cmath" using namespace std; int main(int argc, char* argv[]) ...
在使用reversed()函数时需要注意的事项包括:确保输入序列是可迭代的(列表、元组、字符串等),并且要理解reversed()返回的是一个迭代器,如果需要多次获取反向序列,则必须多次调用reversed()函数。此外,如果对...
2. `sum_reversed(a, b)`:这个函数接收两个整数a和b,首先分别调用`reverse_integer(a)`和`reverse_integer(b)`,得到它们的反置数,然后将这两个反置数相加得到sum,最后调用`reverse_integer(sum)`计算sum的反置...
有些时候,程序需要进行反向遍历,此时可通过 reversed() 函数,该函数可接收各种序列(元组、列表、区间等)参数,然后返回一个“反序排列”的法代器,该函数对参数本身不会产生任何影响。 在交互式解释器中,测试...
UID_CP_WriteID_Reversed.cpp
使用Python内置函数reversed() for i in reversed(arr): pass reversed返回的是迭代器,所以不用担心内存问题。 方法二 使用range()倒序 for i in range(len(arr) - 1, -1, -1): pass 方法三 先使用list自带的...
这里主要讨论的是`sort()`、`sorted()`、`reverse()`和`reversed()`四个函数的区别和用法。 首先,`sort()`函数是Python列表的一个内建方法,只适用于可变对象如列表。它没有返回值,而是直接在原列表上进行排序...
在这个示例中,定义了一个列表`x`,然后通过`reversed(x)`来获取一个逆序的迭代器。通过`for`循环遍历这个迭代器,可以按逆序打印出列表中的元素。 **示例2**:对`range`对象进行逆序处理 ```python a = range(5) ...
1. **信号采集**:首先,我们需要生成或获取一个代表时间反转目标的信号。这可能是一个声波、光波或其他形式的波动信号。在MATLAB中,我们可以使用内置的函数如`sin`、`cos`或`randn`来创建这样的信号。 2. **信号...
本话题“reversed link v2”聚焦于双向链表的反转操作,这是一个常见的编程问题,尤其在Java编程中。双向链表与单向链表不同,它允许节点在两个方向上都有指针,这使得前向和后向遍历变得容易。现在,我们将深入探讨...
添加对反向排序列表支持的 polyfill。 看: 只需将脚本包含在任何页面中(在 DOM 加载结束时或之后),它就会自动使 'reversed' 属性在有序列表上工作(该... 如果你想要一个使用 jQuery 的版本,你可以从获取代码。
此接口用于获取车辆的历史轨迹数据,其重要请求参数与车辆CAN数据查询接口基本相同,主要是`did`、`gpsEndTime`、`pageSize`、`pageType`、`reversed`、`startRowKey`、`gpsStartTime`、`token`和`vin`。...
Python中的`reversed()`函数是一个内置的迭代工具,它能够将序列对象的元素顺序反转,生成一个新的可迭代对象。这个可迭代对象可以被用于for循环或者其他需要迭代的情况,以反向遍历序列的元素。 1. **反转序列** ...
Nike_Reversed
在使用 Fluent 进行流体动力学仿真时,可能会遇到各种错误和警告,这些错误可能影响计算的稳定性和结果的准确性。以下是一些常见的 Fluent 报错及其解决办法: 1. **双击无法打开 cas 或者路径出现乱码**: ...
#### 方法1:使用`reversed()`函数(Reverse法) 这种方法是最简单也是最直观的方式之一。`reversed()`函数可以将一个序列反向迭代,然后我们使用`join()`方法将迭代后的结果组合成一个新的字符串。 **代码示例:*...