无球在3D图形填充

我想画一个立方体和圆形像这样(不填充球)。 我使用OpenTK

无球在3D图形填充


我一直有问题如下:我试图在立方体的顶部画一个圆。 但是,当我们转动Oy公司的立方体和圆圈,圆圈变成椭圆。

我已经尝试绘制球体,而不是一圈。 但不能让它像上面的图片。 任何人有解决办法吗? 提前致谢!

这是我的 无球在3D图形填充


--------------解决方案-------------

画出始终面向相机圆,画一个圆圈很容易。 只要创建顶点的环和使用GL_LINE_STRIP绘制它。 创建一个转换矩阵,它总是把眼光盯着相机参与了一下。 下面是做到这一点的代码。 只需将这个作为你的世界矩阵。

Matrix4 createBillbordMatrix(Vector3 position, Vector3 cameraPosition, vector3 up)
{
Vector3 Z = Vector3.Normalize(direction - cameraPosition);
Vector3 X = Vector3.Normalize(Vector3.Cross(up, Zaxis));
Vector3 Y = Vector3.Cross(ZAxis, XAxis);
Vector3 T = cameraPosition;

return new Matrix4(XX, XY, XZ, 0,
YX, YY, YZ, 0,
ZX, ZY, ZZ, 0,
TX, TY, TZ, 1);
}

如果你知道怎么样基质中工作,你应该能够理解它是如何工作)。 否则,不要担心,你不应该有实现它的一个问题。

绘制2D平面上一个圆。

使用一种特殊的2D变换,而且由于这些都只是丝网看效果图和所有相同的颜色,你就可以绘制2D部分最后。

所以:

1. Draw the 3D part

2. Transform the corners to the 2D coords

3. Draw the circles.

林假设你想要的圆圈以恒定的形状和大小,无论立方体的旋转。

这可能会帮助你开始:http://www.opentk.com/node/2478

是迄今为止不是试图让它帮你画一个球体,即使是没有阴影的速度更快。

分类:3D 时间:2015-03-15 人气:0
本文关键词: C#2.0,opentk
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.879 (s). 10 q(s)