2

在能够使用最新的 Three.JS 的最后努力中,我希望 SO 上的某个人遇到过这个问题,因为 Google 什么也没给我。

我正在使用 Ashima Perlin 噪声着色器(参见示例) - http://www.clicktorelease.com/blog/experiments-with-perlin-noise

如果我使用 Three.JS 的 48 版(最新版本是 59),我可以让它工作得很好。

尝试使用此版本的最新版本会出现此错误:

ERROR: 0:301: 'objectMatrix' : undeclared identifier 
ERROR: 0:301: 'objectMatrix' :  left of '[' is not of type array, matrix, or vector  
ERROR: 0:301: 'xyz' :  field selection requires structure, vector, or matrix on left hand side 
ERROR: 0:301: 'objectMatrix' :  left of '[' is not of type array, matrix, or vector  
ERROR: 0:301: 'xyz' :  field selection requires structure, vector, or matrix on left hand side 
ERROR: 0:301: 'objectMatrix' :  left of '[' is not of type array, matrix, or vector  
ERROR: 0:301: 'xyz' :  field selection requires structure, vector, or matrix on left hand side 
ERROR: 0:301: 'constructor' : not enough data provided for construction 
 three.min.js:40

这通常是我会为其他人调试、修复和推送到 git 的东西,但我没有 C 知识或着色器知识来调试它。

4

1 回答 1

4

好的,所以任何人都想知道为什么这个演示不能与最新版本的 three.js 一起工作:http: //www.clicktorelease.com/code/perlin/chrome.html

这是因为 varname 发生了变化,您只需要更改 void main() 中的顶点着色器。

更改此行:

vec3 nWorld = normalize( mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * modifiedNormal );

对此:

vec3 nWorld = normalize( mat3( modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz ) * modifiedNormal );

感谢 @gaitat 提供的指向 Three.js 迁移页面的帮助,非常有帮助。

于 2013-05-28T02:34:35.157 回答