【问题标题】:How can I make a 3D object have different color front and back faces如何使 3D 对象具有不同颜色的正面和背面
【发布时间】:2019-03-05 20:01:24
【问题描述】:

是否可以让 3D 对象在每一面都有不同的颜色(正面和背面面对对象的一侧一种颜色,如 red,另一侧另一种颜色,如 blue em>) 使用冲浪?

%example
[x y] = meshgrid(-1:0.1:1); % Generate x and y data
z = zeros(size(x, 1)); % Generate z data
surf(x, y, z, 'FaceColor', 'red') % Plot the surface

如何使冲浪对象的另一侧变成另一种颜色,例如蓝色?这可能吗?

我正在使用类似于 Matlab 的 Octave 5.1

【问题讨论】:

  • 我不认为你可以,因为这不是几何图元的工作方式,例如OpenGL。我能想到的最好方法是在彼此非常近的距离处绘制 2 个表面并为它们着色
  • 它可能“支持”它,因为它使用 OpenGL,但函数 surf 不使用 GLSL。除非您能够重写 surf 的源代码以将此选项添加到绘图中,并重新编译 Octave,否则答案是您做不到。

标签: matlab octave


【解决方案1】:

几乎每台计算机都使用 OpenGL 在屏幕上绘制内容,MATLAB(和 Octave AFAIK)也是如此。由于 MATLAB 使用 OpenGL 原语在屏幕上绘制内容,因此您不能做任何 OpenGL 原语不能做的事情,例如在每一侧绘制一个具有不同颜色的图元。有了这样的理解,结论就是,要做你想做的事,你需要绘制两次表面。

surf(x, y, z, 'FaceColor', 'red') % Plot the surface
hold on
surf(x, y, z-z*0.001, 'FaceColor', 'blue') % Plot the surface

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-04
    • 1970-01-01
    • 2017-11-09
    • 2011-06-08
    • 2015-04-13
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多