有没有办法在无头服务器(独立服务器,亚马逊AWS或类似服务器)上运行服务器端的three.js?
目前,当用户的浏览器不支持WebGL时,我会回到画布渲染(仅出于性能原因的线框).这对于实时交互来说已经足够了,但是为了使应用程序有意义,用户真的需要以某种方式能够看到具有灯光,阴影,后期处理等的正确渲染版本,即使它具有很大的延迟.
那么......是否可以使用功能性的three.js实例创建服务器端服务?客户端仍然会使用tree.js画布线框渲染,但在说...一秒钟不活动之后,它将通过AJAX从服务器端服务请求完整渲染,并将其简单地覆盖为图像.
目前是否有任何应用程序,库或任何允许这样的东西(功能javascript + webgl + three.js在无头,最好是Linux服务器,以及GPU少)?
PhantomJS浮现在脑海中,但显然它还不支持WebGL:http://code.google.com/p/phantomjs/issues/detail? id = 273
或者问题的任何替代方法?使用GPU和标准chrome/firefox实例以编程方式控制完整桌面计算机的路线感觉很可能,虽然很脆弱,但如果有任何纯软件解决方案,我真的不想去那里.
我试图在 Three.js 中找到或创建反向运动学姿势的工作示例。理想情况下,我想通过他们的 Collada 导出器从 Makehuman 导出人体模型,使用 THREE.ColladaLoader 加载它们,并以编程方式或通过某些 dat.GUI 界面将它们设置为 Three.js 中的不同姿势。有点像艺术家娃娃的实现 - 我不需要动画,但调整姿势时的实时反馈会很好,并且反向运动风格姿势将是高度首选。
这几天我一直在学习和查找信息。这个http://www.youtube.com/watch?v=6om9xy6rnc0非常接近,但我无法找到任何示例代码或下载。我发现的最接近的工作示例是这样的:http://mrdoob.github.com/third.js/examples/webgl_animation_skinning.html但是,这似乎使用预定义的动画帧,而这又似乎在正向运动学中操纵骨骼方式,所以这也没有多大帮助。
我什至找不到用于测试的模型,因为我不知道在搜索与 Three.js 兼容的 IK 装备/蒙皮/骨骼时要寻找什么。MakeHuman 似乎确实有很多装备导出选项,我不知道其中是否有用。
Three.js 中是否有可用的 IK 系统,如果有,是否有任何工作示例、工作人体模型或任何关于应研究哪种精确绑定系统/工作流程来实现此目的的提示?如果无法直接支持 Collada,也可以选择在 Blender 中创建角色并导出它们。
编辑:找到了这个现场演示http://www.akjava.com/demo/poseeditor/但代码完全不可读。
我在制作场景迷雾时遇到了麻烦THREE.ShaderMaterial.目前,雾仅影响其他几何,但使用THREE.ShaderMaterial创建的天幕不受雾的影响.
fogShaderMaterial中似乎有一个布尔参数,显然应将其设置为true以使用场景雾.uniforms.fogColor is undefined然而,使用它会导致错误.错误发生在WebGLRenderer功能上refreshUniformsFog.
这是一个错误还是我使用参数错误?
基于webgl_materials_lightmap.html示例的测试用例:http://jsfiddle.net/HXhb4/ 如果在第62行将雾设置为true并运行测试,则会出现错误.我想要发生的是被雾影响的天幕,就像使用普通MeshPhongMaterial创建的模型或天幕一样.
我正在尝试在WebGLRenderer中的PhongMaterial中为THREE.SpotLight实现光饼干(或图案或光纹理或光掩模).目的是能够为光附加纹理,如下所示:http://www.idjnow.com/ProductImagesLarge/GOBO-GLASS1C.jpg纹理会降低光线的强度,产生阴影般的效果投影.
我认为我有"将纹理附加到光线并将其作为制服传递给着色器中查找",尽管还没有能够测试它,因为我在聚光锥/点中计算我的位置时遇到了问题.
我看到聚光灯的光贡献在这里计算(我正在直接修改Three.js源,而不是创建我自己的材质):
https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLShaders.js#L1013
聚光灯的位置是一个圆圈,对吧?或椭圆,如果它在一个角度.所以我需要在这里添加一些代码,这将告诉我在聚光灯下的位置(xy坐标).我可以在纹理查找上映射这些坐标,相应地降低spotDiffuse,并希望有工作的图案投影.
我怎样才能计算出与每个光相关的坐标?
或者有没有更好的方法在Three.js中实现光饼干/图案/光纹理/光掩模?我认为它是游戏引擎中的一个流行功能,如果有内置的东西会很高兴.http://docs.unity3d.com/Documentation/Components/class-Light.html很好地描述了我正在寻找的东西(cookie部分).
我正在尝试在 Three.js 中可视化胶片相机裁剪和纵横比。请耐心等待,这是一道数学问题,我无法用更简短的语言来描述它......
我不只是使用 CameraHelper,而是为每个相机使用三个稍微修改过的 CameraHelper 对象。当查看相机(锥体)时,或者通过相机查看时,可以看到辅助线,辅助线有效地为当前相机创建引导线。
框架助手(带有渲染侧面的蓝色)。考虑到焦距和传感器或胶片尺寸,这是经过配置的并且应该是实际相机所看到的。计算在getFOVFrame.
监控助手(白色)。我们这里的帧长宽比是 1.5。例如,如果我们计划使用长宽比为 1.5 的相机拍摄长宽比为 2.35(电影院)的影片,则这将显示帧的裁剪区域。因此,它需要完全适合框架,上下或两侧都有额外的空间,但不能两者兼而有之。计算在getFOVMonitor.
屏幕助手(紫色)。我们希望在浏览器中看到完整的东西,如果浏览器窗口尺寸/长宽比不同,我们会调整实际渲染的 Three.js 相机,使其适合浏览器窗口和尺寸。因此,这个助手始终具有当前浏览器窗口的宽高比和焦距,以便它适合框架和监视器助手。计算于getFOVScreen
因此,根据我们实际首选的相机(帧助手),我们需要计算监控相机并调整它的视场,使其完全适合帧相机内。然后我们还需要计算屏幕相机并调整它的视场,使帧相机完全适合内部。
我当前的解决方案看起来几乎是正确的,但有一些问题。对于长镜头(小视场,大焦距),这似乎是正确的:


但在广角镜头(大视场、小焦距)下,解决方案开始失效,白色监视器助手周围有额外的空间,例如:



所以我认为我对各种相机的计算是错误的,尽管结果看起来几乎“足够接近”。
下面的代码返回垂直 FOV、水平 HFOV 和纵横比,然后用于配置相机和助手:
// BLUE camera fov, based on physical camera settings (sensor dimensions and focal length)
var getFOVFrame = function() {
var fov = 2 * Math.atan( sensor_height / ( focal_length * 2 ) ) * ( 180 / Math.PI );
return fov;
}
var getHFOVFrame = …Run Code Online (Sandbox Code Playgroud) three.js ×5