嗨,我想知道为什么大多数教程和编程代码使用 MVP 来描述模型-视图-投影矩阵。而不是 PVM 这是代码中的实际实现顺序:
mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;
gl_Position = MVP * VertexInModelSpace;
Run Code Online (Sandbox Code Playgroud)
对我来说,编写 PVM 而不是 MVP 似乎更容易理解。
当使用python和win32com自动化软件形式时,Adobe遇到了传递2d坐标数组的问题.如果看一下Adobe为visual basic(VB)提供的代码就很简单了.在Illustrator中绘制线条的简化示例如下所示:
Set appObj = CreateObject("Illustrator.Application")
Set docObj = appObj.Documents.Add
Set pathItem = docObj.PathItems.Add
pathItem.SetEntirePath Array(Array(0.0, 0.0), Array(20.0, 20.0))
Run Code Online (Sandbox Code Playgroud)
现在天真的假设是VB代码可以通过如下转换成python:
from win32com.client import Dispatch
appObj = Dispatch("Illustrator.Application")
docObj = appObj.Documents.Add()
pathItem = docObj.PathItems.Add()
pathItem.SetEntirePath( [ [0.0,0.0], [20.0,20.0] ] )
Run Code Online (Sandbox Code Playgroud)
显然,这并不容易,python发出错误说"只支持维度为1的数组".现在我知道阵列数组和二维数组之间存在差异.所以问题是我如何强制python制作一个正确的数组呢?
我尝试制作自己的VARIANT类型,但失败了.我也看过这个问题.任何人都有同样的问题,可以解决一些问题吗?
PS:
我知道使用以下方法可以避免这个问题:
pathItem = docObj.PathItems.Add()
for point in ( [0.0,0.0], [20.0,20.0] ):
pp = pathItem.PathPoints.Add()
pp.Anchor = point
Run Code Online (Sandbox Code Playgroud)
但是有类似的情况,这实际上并不起作用.无论如何,重点是编写关于移植给学生的指导方针,以便更接近原始意图.