我正在使用html页面上的点击通话按钮创建应用程序。
会有一个人来接电话。我希望此人能够在我的服务器上设置一个具有布尔值的变量:1可用,0不可用。
我可以创建一个单字段SQL表,但这感觉有点过头,或者我可以读写仅包含一个字符的文本文件。
存储单个值的最正确方法是什么?
我正在尝试确定为什么我无法平滑加载OBJLoader的阴影几何体.
var loader = new THREE.OBJLoader(manager);
loader.load('/manmodel/js/man.obj', function (object, materials) {
console.log(object);
console.log(materials);
man = object;
man.traverse(function (child) {
if (child instanceof THREE.Mesh) {
child.geometry.computeFaceNormals();
child.geometry.computeVertexNormals( true );
child.material = new THREE.MeshPhongMaterial({
color: 'white',
shading: THREE.SmoothShading // <----------- THIS IS THE PROBLEM
});
}
});
man.position.y = -10;
scene.add(man);
});
Run Code Online (Sandbox Code Playgroud)
这是结果:

如果我删除行computeFaceNormals(),模型呈现相同.如果我删除computeVertexNormals(true),对象渲染时没有光照(黑色) - 所以我知道这是做某事.
如果我在这段代码中更改了MeshPhongMaterial的颜色属性,颜色会发生变化,所以我也知道这是有效的.
我试图使用顶点和普通助手来确定问题所在,但它们失败了,因为使用BufferGeometry时,面和顶点不会存储为数组.
我也尝试修改man.obj文件,将's'值从'off'更改为1.这没有做任何事.
因为我将为Blender中生成的不同人物加载几个.obj文件,目前每个大约2MB,我更喜欢在浏览器上进行着色而不是将其"烘焙"到文件中,如果这样会增加文件大小.
问题:我在这里遗漏了什么吗?或者,有没有办法将.obj文件作为标准几何体加载,计算法线,应用着色,然后另存为BufferGeometry?
PS.我可能还需要在线下进行光线追踪的法线.
我有一个像这样的数组:
arr = [ [[x,x],[x,x]], [[x,x],[x,x],[x,x]], [[x,x]] ]
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个像这样的数组:
arr = [ [x,x],[x,x] , [x,x],[x,x],[x,x], [x,x] ]
Run Code Online (Sandbox Code Playgroud)
所以我尝试过这个:
for (var i=1; i< arr.length; i++){ arr[0].concat(arr[i]); }
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我怎样才能“合并”这个中间级别的数组?