Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html WebGL模型简化_Html_3d_Webgl_Game Engine_Game Physics - Fatal编程技术网

Html WebGL模型简化

Html WebGL模型简化,html,3d,webgl,game-engine,game-physics,Html,3d,Webgl,Game Engine,Game Physics,我目前正在计划一个Web GL游戏,并开始为它制作模型,我需要知道是否有人知道,如果说我的模型是1X比例,我的相机从对象中缩小/平移,我的模型变成0.1X比例,WGL引擎会对视图中的模型进行什么样的简化 也就是说,如果我用一个三角形作为例子,这里是1倍的比例 这是一个三角形,在保持所有复杂性的同时,保持原来大小的10%(抱歉,它太模糊了) 虽然三角形看起来相同,但复杂性并非完全必要,可以简化为4个三角形以提高性能 我知道WebGL是一个状态机,可能什么都不会发生;模型的复杂性保持不变,无论规

我目前正在计划一个Web GL游戏,并开始为它制作模型,我需要知道是否有人知道,如果说我的模型是1X比例,我的相机从对象中缩小/平移,我的模型变成0.1X比例,WGL引擎会对视图中的模型进行什么样的简化

也就是说,如果我用一个三角形作为例子,这里是1倍的比例

这是一个三角形,在保持所有复杂性的同时,保持原来大小的10%(抱歉,它太模糊了)

虽然三角形看起来相同,但复杂性并非完全必要,可以简化为4个三角形以提高性能

我知道WebGL是一个状态机,可能什么都不会发生;模型的复杂性保持不变,无论规模或状态如何,但如何解决这一问题以获得最佳性能

因为在1X比例下,视图中可能只有一个或很少的模型,但当缩放到0.1X比例时,可能会有数百个。也就是说,如果模型的复杂性太高,那么性能就会受到巨大的影响,游戏就会变得毫无反应/无用

非常感谢所有建议。

搜索“镶嵌”。 使用它,您可以从网格中添加或减去三角形

细分与LOD对象(细节级别)密切相关

比例因子就是网格的所有顶点都要乘以的系数,使用“比例”可以简单地沿轴拉伸网格

看看这个Three.js示例:
(WASD/鼠标移动)

WebGL不会为您简化。你必须自己做

通常,您会根据不同的手工模型显示的距离来计算距离摄影机的距离。在远处显示低细节模型,在近处显示高细节模型。有很多方法可以做到这一点,你选择哪种方法取决于你自己。比如说

  • 使用不同的高多边形模型近,低多边形远

    这是最简单和最常用的方法。这种方法的问题是,当引擎从使用低多边形模型切换到高多边形模型时,您经常会看到弹出。另一个答案中链接的three.js示例使用了这种技术。它会创建一个LOD对象,该对象的工作是决定在N个模型中的哪一个之间切换。由你来提供型号

  • 在远处使用低多边形,在其上方的高多边形中淡入。一旦高多边形完全遮挡低多边形,停止绘制低多边形

    侠盗猎车手使用这种技术

  • 从高多边形创建低多边形,并使用任意数量的技术在它们之间变形

    比如说

     1----2----3----4            1--------------4
     |    |    |    |            |              |
     |    |    |    |            |              |       
     4----5----6----7            |              |
     |    |    |    |   <----->  |              |
     |    |    |    |            |              |
     8----9----10---11           |              |
     |    |    |    |            |              |
     |    |    |    |            |              |
     12---13---14---15           12-------------15
    
    1----2----3----4 1----4
    |    |    |    |            |              |
    |    |    |    |            |              |       
    4----5----6----7            |              |
    |    |    |    |     |              |
    |    |    |    |            |              |
    8----9----10---11           |              |
    |    |    |    |            |              |
    |    |    |    |            |              |
    12---13---14---15           12-------------15
    
    Jak和Daxter以及Crash Team Racing(旧游戏)使用上述结构。 远处仅使用点1、4、12、15。特写全部16点被使用。 点2、3、4、5、6、8、9、10、11、13、14可以放置在任何位置。 在远距离和近距离之间,所有点都会变形,因此16点 网格将成为4点网格。如果你玩Jak和Daxter#1或Ratchet和Clank#1 你可以在游戏中看到这种变形。到了第二个版本 游戏中,艺术家们擅长隐藏变形

  • 近距离绘制高多边形,将高多边形渲染为纹理,并在中绘制广告牌 距离。缓慢更新公告牌(每N帧更新一次,而不是每帧更新一次)。 这是一种用于设置动画对象的技术。它被用在撞车队比赛中 当其他选手在很远的地方时


  • 我相信还有很多其他的。有一些实时细分算法可以从高到低自动生成低多边形,或者以其他形式(b样条曲线、元球、细分曲面)描述模型,然后生成一些多边形。他们是否足够快并且产生足够好的结果取决于你。据我所知,大多数AAA游戏都不使用它们

    我喜欢建议3,这是一款建模工作最少的游戏;)但我想知道应用的纹理,当然在简化过程中,我必须重新应用纹理,这与在简化级别重新绘制整个模型一样昂贵?我可以看到简化带来的好处,但除了复杂度之外,还有3条渲染路径。1.画低多边形。2.画高多边形。3.在“低”和“高”之间绘制变形。在变形过程中,使用低多边形和高多边形纹理并交叉褪色。老实说,除非你要发布AAA头衔或只是想这么做,否则我建议现在就使用#1,然后继续。