标签: rendering

在工程应用程序中进行实时3D渲染的最佳方法是什么?

我们正在开发一个基于GIS的应用程序,它模拟虚拟现实环境中的真实单词对象(即管道,道路等).目前我们使用ArcScene中ESRI的ArcGIS包3D渲染,并在今后,我们打算用我们自己的3D环境来取代它.

问题: 在上述应用程序中进行实时3D渲染的最佳方法是什么?我在这个领域没有任何经验,我真的很困惑.我应该使用一个可用的3D渲染引擎(下面列出一些)吗?如果答案是肯定的,那么应考虑哪些参数(不论其成本如何)?有没有人在这个领域有任何经验或建议?

环境和必需品:

  1. 我们使用C#.NET环境来开发应用程序
  2. 有大量的3D对象可供展示
  3. 3D对象分组在不同的CAD文件中
  4. 与最终3D场景的交互是必不可少的(例如,选择一个3D对象)
  5. 需要加载,卸载,打开,关闭和设置一个层和/或对象的透明度.
  6. 高性能实时渲染广泛的模型(超过800公顷的区域),高细节(从道路到非常精细的物体,如一个螺丝)
  7. 没有必要提前着色问题(目前)
  8. 纹理必须适用

Rendring Engines: 经过一番搜索,我找到了以下3D渲染解决方案:

  1. CadFaster |引擎:"CadFaster |引擎是一种独特且可扩展性最高的3D渲染解决方案,适用于技术应用.它比通常的CAD应用程序快十倍.该引擎包括用于3D数据集和几何的专利实时同步机制.允许自动集成到主应用程序.CadFaster | Engine还包含专利的实时多边形缩减,可提高3D性能." 引自DevMaster

  2. Quest3D:"使用Quest3D创建软件,Web和模拟器.Quest3D是架构可视化,产品可视化,数字娱乐,计算机辅助培训和高端VR应用的完美解决方案." 引自Quest3D的介绍

  3. OpenSceneGraph:"OpenSceneGraph是一个开源的高性能3D图形工具包,应用程序开发人员在视觉模拟,游戏,虚拟现实,科学可视化和建模等领域使用.完全用标准C++和OpenGL编写...... OpenSceneGraph是现已成为世界领先的场景图技术,广泛应用于视觉,空间,科学,石油天然气,游戏和虚拟现实等行业.主要语言:C/C++语言包装:C#,...... 从OSG主页引用.

  4. 此外,DevMaster3DLinks还提供了几乎完整的可用引擎列表

3d rendering

8
推荐指数
1
解决办法
6096
查看次数

iphone到ipad,iphone 4 uialertview问题

所以我已经将代码升级到ipad(即转换为通用应用程序).但是,对于IOS4,UIAlertview渲染似乎已关闭.它不是位于中间位置,而是向上跳跃并显示在顶部,一半的盒子被切断.横向也是如此.

我的理解是UIalertview始终位于中间?我查看了代码,但没有在代码中的任何位置设置框架/位置.这只发生在4.0,在iphone 4和运行4.0的itouch上.其他每个版本都很好,包括ipad.有什么想法吗?

谢谢.

iphone rendering uialertview ipad

8
推荐指数
1
解决办法
868
查看次数

ContourPlot3D中重叠的网格线

我在Mathematica 7.0.1中Mesh生成的3D表面上渲染线条时遇到问题:ContourPlot3D

p=ContourPlot3D[x^4+y^4+z^4-(x^2+y^2+z^2)^2+3(x^2+y^2+z^2)==3,
      {x, -2,2}, {y, -2, 2}, {z,-2,2},
     BoundaryStyle->Directive[Black,Thickness[.003]],
     ContourStyle->Directive[Orange,Opacity[0.5],Specularity[White,300]],
     PlotPoints->90,Ticks->None,
     MeshStyle->Directive[GrayLevel[.7],Thickness[.001]],
     Lighting->{{"Directional",RGBColor[1,1,1],
                           {ImageScaled@{1,0,1},ImageScaled@{0,0,0}}}}];
p=Graphics[Inset[p,{0,0},Center,{1,1}],
                        PlotRange->{{-.5,.5},{-.5,.5}},Frame->True]
Run Code Online (Sandbox Code Playgroud)

screenshot1

仔细看看它们:

Show[p, PlotRange -> {{-.16, -.05}, {0, .1}}]
Run Code Online (Sandbox Code Playgroud)

screenshot2

您会看到灰色Mesh线条在许多地方与表面形成三角形重叠,甚至看起来是虚线.有办法避免这种情况吗?

3d rendering wolfram-mathematica vector-graphics mathematica-frontend

8
推荐指数
1
解决办法
729
查看次数

Oculus Rift的原生渲染插件

我正在开发一个项目,将一些渲染卸载到我为Unity编写的本机插件中,以便利用实例化和其他高级图形功能.我正在为跨平台版本开发它,但我使用Mac,因此主要使用OpenGL进行测试.此时,插件仅向屏幕中心呈现四边形,并以十六进制值着色.该插件在一个空白的Unity项目中按预期工作,但只要我将其合并到我的Oculus项目中,它就会开始表现不正常.

在Rift中,插件的几何绘制两次,一次在两只眼睛上伸展,另一次只在右眼的范围内绘制.此外,我应用于几何体的任何原始颜色都会丢失,几何体似乎会拾取周围的颜色; 在带有红色文字的黑色屏幕上,几何体将大部分为黑色,并且有一些红色渗透到线条中.加载绿色地形后,插件绘制的几何图形变为绿色.

下面是在空白的Unity项目中绘制的几何图形的屏幕截图,其中没有其他内容:

空白的Unity项目

以下是我的Oculus Rift应用程序上绘制的相同几何图形的屏幕截图:

Oculus Rift顶部的原生渲染

这是我正在渲染的顶点的创建(三个坐标和颜色):

Vertex verts[4] =
{
    { -0.5f,  0.5f,  0, 0xFF0000ff },
    {  0.5f,  0.5f,  0, 0xFFff0000 },
    {  0.5f, -0.5f,  0, 0xFF00ff00 },
    { -0.5f, -0.5f,  0, 0xFFff0000 },
};
Run Code Online (Sandbox Code Playgroud)

这是绘图函数,称为插件中的每个帧:

// OpenGL case
if (g_DeviceType == kGfxRendererOpenGL)
{
    //initialize model view matrices
    glMatrixMode (GL_MODELVIEW);
    float modelMatrix[16] =
    {
        1,0,0,0,
        0,1,0,0,
        0,0,1,0,
        0,0,0,1,
    };
    glLoadMatrixf (modelMatrix); //assign our matrix to the current MatrixMode

    //initialize projection matrix
    glMatrixMode (GL_PROJECTION);
    projectionMatrix[10] = 2.0f; //tweak projection matrix …
Run Code Online (Sandbox Code Playgroud)

opengl plugins rendering unity-game-engine oculus

8
推荐指数
1
解决办法
709
查看次数

哪些操作会触发"更新图层树"?

有人可以帮我弄清楚哪些动作会触发"更新图层树"动作?"更新图层树"对页面加载持续时间有什么影响?

html javascript performance rendering google-chrome

8
推荐指数
1
解决办法
1793
查看次数

Chrome渲染颜色很奇怪

我的戴尔2709w显示器最近开始表现得很奇怪.在某些页面上,它会呈现不同的颜色,而不应该呈现.

它只能在外部显示器上执行此操作,而不是Macbook本身.它只是在铬.safari和firefox不这样做.

我正在运行macOS Sierra

这是它的作用: 在此输入图像描述

那些光点不应该在那里!

macos rendering google-chrome artifacts colors

8
推荐指数
1
解决办法
1250
查看次数

使用 UUID 作为列表键会导致 React 中不必要的重新渲染吗?

我有一个项目列表,其中包含的数据不足以生成唯一键。如果我使用 uuid 库生成 ID,单个项目的更改是否也会导致其他项目重新呈现,因为它们的密钥每次都会更改?

const people = [
  {
    gender: 'male',
    firstName: 'david',
  },
  {
    gender: 'male',
    firstName: 'david',
  },
  {
    gender: 'male',
    firstName: 'joe',
  },
]

const renderPeople = () => {
  return people.map(person => {
    return (
      <div key={uuid.v4() /* a new value each time? */ }>
        <p>{person.gender}</p>
        <p>{person.firstName}</p>
      </div>
    )
  })
}
Run Code Online (Sandbox Code Playgroud)

一段时间后......其中一个大卫改变了

const people = [
  {
    gender: 'male',
    firstName: 'david',
  },
  {
    gender: 'male',
    firstName: 'davidzz',
  },
  {
    gender: 'male',
    firstName: 'joe',
  },
]
Run Code Online (Sandbox Code Playgroud)

rendering reactjs

8
推荐指数
2
解决办法
6621
查看次数

gganimate 返回 .png 文件,但没有动画对象

我正在尝试创建一个动画来向学生展示如何用动画表示数据。运行下面的代码

library(ggplot)
library(gganimate)
library(carData)        
anim <- ggplot(mtcars, aes(mpg, disp)) +
          transition_states(gear, transition_length = 2, state_length = 1) +
          enter_fade() +
          exit_fade()

    animate(anim)
Run Code Online (Sandbox Code Playgroud)

我期待预览窗口上的动画和 gif 图像的创建。

相反,我得到的是工作目录中的 100 个 .png 文件,但没有别的。图片是正确的,是动画的帧,只是没有被函数拼凑起来。特别是我得到了 100 个元素,其中我在这里显示了第一个元素:这个列表

  [1] "./gganim_plot0001.png" "./gganim_plot0002.png" "./gganim_plot0003.png" 
  [4] "./gganim_plot0004.png" "./gganim_plot0005.png" "./gganim_plot0006.png"
  [7] "./gganim_plot0007.png" "./gganim_plot0008.png" "./gganim_plot0009.png"
 [10] "./gganim_plot0010.png" "./gganim_plot0011.png" "./gganim_plot0012.png"...
Run Code Online (Sandbox Code Playgroud)

    attr(,"frame_vars")
    frame nframes progress transitioning previous_state closest_state
1       1     100     0.01         FALSE              3             3
2       2     100     0.02         FALSE              3             3
3       3     100     0.03         FALSE              3             3
Run Code Online (Sandbox Code Playgroud)

next_state
1 …
Run Code Online (Sandbox Code Playgroud)

rendering ggplot2 gganimate

8
推荐指数
1
解决办法
3169
查看次数

呈现高度细化和“缩小”的数据

互联网上有一个 gif,其中有人使用某种 CAD 并在其中绘制了多个矢量图片。在第一帧中,他们放大了一个小点,显示出一个全新的不同比例的矢量图片,然后他们继续放大另一个小点,显示另一张详细的图片,重复几次。这是 gif 的链接
或另一个类似的示例:假设您有一个时间序列,每个样本的粒度为 1 毫秒,然后缩小以显示数年的数据。

我的问题是:当大量数据最终混叠成单个像素时,如此精细的数据最终如何呈现。
您是否必须通过整个数据集来渲染该像素(即在时间序列的情况下:通过数百万条记录将它们平均为 1 行,或者在 CAD 渲染整个矢量图片并将其模糊成小点的情况下) ,或者可以应用某些详细级别的优化,这样您就不必这样做了?
如果是这样,它们是如何工作的?在哪里可以了解它?

plot rendering time-series cad

8
推荐指数
1
解决办法
139
查看次数

Flutter 中的小部件/图像扭曲和扭曲

像 Transform 小部件这样的小部件可以轻松地在 Flutter 中缩放、平移和倾斜小部件。但没有明显的方法可以直接扭曲或扭曲图像。

以这个扭曲的例子为例:

实施例1

假设此小部件是一个容器,其子部件为装饰图像和文本小部件。在这里,小部件不会被贝塞尔曲线或路径剪切。小部件被“拉伸”或扭曲。使用 Container 小部件可能无法实现这一点,但可以使用 CustomPainter 来完成吗?

另外,看一下这个例子:

实施例2

这里使用波纹效果扭曲图像。是否有可能使用 Flutter 来复制它?

rendering dart flutter

8
推荐指数
1
解决办法
1808
查看次数