小编gma*_*man的帖子

Cesium WebGL相机旋转,如何停止旋转

好的,第一次使用Cesium.我有一个简单的,非高级的问题,我在他们的表单上发布了几次,但没有人回应.所以我想我会在这里试试.

我需要做的就是弄清楚如何在调用另一个事件之前停止一个事件.这是一个正在发生的事情的例子.地球在用户连接上旋转,但如果他们点击"飞回家"等我需要它停止.

代码如下.

所以spinGlobe中的arg是spinRate.如果我在初始连接上传入0.0,它将不会旋转.完善.所以我觉得如果点击事件(用户点击飞回家),则调用spinGlobe(0.0)表示地球将停止旋转.但事实并非如此.我可以不动态更改spinRate吗?或者我这样做是错的?

spinGlobe( 0.5 )

 function spinGlobe( dynamicRate )
 var previousTime = Date.now();

 viewer.clock.onTick.addEventListener(function( clock ) {
 var spinRate = dynamicRate;
 var currentTime = Date.now();
 var delta = ( currentTime - previousTime ) / 1000;
 previousTime = currentTime;
 viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, -spinRate * delta);
 });
 }
Run Code Online (Sandbox Code Playgroud)

javascript rotation cesium

5
推荐指数
1
解决办法
1488
查看次数

如何在iOS8模拟器中测试方向锁定?

如果我没记错的话,我可以在 XCode 6 之前的 iOS 模拟器中设置方向锁定。现在看来此选项不再可用。是在别的地方吗?

注意:我正在测试可调整方向的网络应用程序。如果用户的方向锁定与解锁,他们需要做不同的事情,所以我需要测试。我本可以发誓我能够在 XCode 5 中的 iOS7.1 模拟器上测试这个,但 XCode 6 中似乎缺少该选项。

有没有办法在模拟器中测试这个?

ios ios-simulator xcode6 ios8

5
推荐指数
1
解决办法
2340
查看次数

THREE.js:2xMeshes使用相同的向量作为位置

刚刚在ThreeJS中对r67-r69进行了更新,最终在将其位置引用到一个(相同)向量时遇到了问题.

在我做这个工作之前:

var vector = new THREE.Vector3(50, 50, 50);
_Mesh1.position = vector;
_Mesh2.position = vector;
Run Code Online (Sandbox Code Playgroud)

这使我有可能在移动其中一个网格时移动另一个网格.

在r69中,位置矢量保持不变(也就是0,0,0),这意味着每当我模拟另一个时,我必须为每个网格手动设置X,Y和Z坐标.

我在这里错过了一些改变吗?或者我应该怎么做才能解决这个问题?

javascript three.js

5
推荐指数
1
解决办法
1970
查看次数

Three.js 3D 缩放到鼠标位置

我有下一个问题。我有一个用 Three.js +orbitControls.js 制作的用于相机处理的项目。有一个场景,上面有一个简单的立方体和相机。我有一个来自orbitControls.js 的相机,当我做鼠标滚轮时,它会朝屏幕中心放大/缩小(默认行为)。我需要修改它,以便将放大/缩小到 3D 对象上的鼠标位置,就像在 3D 编辑器中一样,如 3D Max、搅拌机。

我确实理解逻辑应该是这样的:从您开始缩放的位置获取鼠标的位置,实际上您想要放大的位置,存储该值,放大并获取新的鼠标位置,找到之间的偏移量第一个鼠标位置和当前,并在放大期间将相机移动到该偏移量。但是,它无法正常工作。大多数情况下,我认为这可能是我的相机坐标的问题,以及我想放大的位置。

这是我的代码:

 window.onload = function() {

        var renderer = new THREE.WebGLRenderer();
        var width = 640;
        var height = 480;
        renderer.setSize( width, height );
        var div = document.getElementById('canvas')
        div.appendChild( renderer.domElement );

        var scene = new THREE.Scene();

            camera = new THREE.PerspectiveCamera(
            70,
            width / height,
            0.1,
            10000
        );
        camera.position.set( 0, 10, 10 );
        camera.lookAt( scene.position );

        control = new THREE.OrbitControls( camera );

        var geometry = new THREE.CubeGeometry( 5, 5, 5 ); …
Run Code Online (Sandbox Code Playgroud)

javascript 3d camera three.js

5
推荐指数
1
解决办法
5908
查看次数

是否有可能在THREE.js中启用无限数量的渲染器?

为了避免XY问题,让我解释一下我来自哪里.我想使用THREE.js绘制使用相同时间轴堆叠在一起的大量波形.波形只是THREE.Line和我正在通过修改正交相机的视图边界来实现这些波形的缩放/平移/缩放.

我最初尝试完成这项工作,这使我创建了多个具有固定高度的画布元素,彼此堆叠在一起,并将THREE.WebGLRenderer附加到每个画布上.这非常有效,直到我尝试将其缩放到15个左右的波形,其中THREE.js给了我一个警告"太多活动的webgl上下文",并开始删除旧的上下文.

我觉得这是一个不错的做法,考虑到这里应用的技术相同:http://threejs.org/examples/#webgl_multiple_canvases_grid

在此示例中,创建了4个WebGLRenderer,每个画布一个.

那么,是否有可能以某种方式覆盖此警告,并创建无限数量的canvas元素,每个元素都有自己的渲染器?

在旁边:

我已经考虑过使用一个场景并在其中相应地定位波形,并使用多个摄像机,其方法类似于http://threejs.org/examples/#webgl_multiple_views.

问题有两方面:

(1)我失去了在每个波形的基础上进行dom操作并轻松连接键和鼠标监听器的能力.

(2)这个解决方案似乎也没有扩展.一旦渲染器的高度超过6000px高度,它就会开始进入某种类型的腐败状态,并且部分场景不会出现,其余内容会出现拉伸以进行补偿.

感谢任何能提供帮助的人!

javascript three.js

5
推荐指数
1
解决办法
2511
查看次数

如何在three.js中不延伸前景而增加透视

我有一个带有纹理地板平面的three.js场景,需要一个非常特定的视角来与静态2D叠加层对齐

图像在这里

我的问题是,我越多地增加相机FOV以获得我需要的视角,前景延伸越多,我不希望这样.我似乎需要一个非常高的FOV(~120-150)来使纹理跟随墙壁,这是如此之高,以至于相机正在将物体定位在它后面.我需要将相机几乎移动到场景的中心,以显示整个楼层,这只是感觉不对.如何调整此场景,以便在没有失真的情况下获得正确的视角?

实例:http://warriorhut.net/testing/shapes/backend/room/view.basic.php

相关的相机设置是:

var WIDTH = 1024;
var HEIGHT = 683;
var FOV = 140; // Increases perspective as it goes higher but also distortion

camera =  new THREE.PerspectiveCamera(FOV, WIDTH/HEIGHT, .1, 3000);

camera.position.x = 0;
camera.position.y = 200;
camera.position.z = 0;  
//camera.lookAt(scene.position);
camera.lookAt(new THREE.Vector3( 0, 100, -400 )); // look at the back of the room
camera.updateProjectionMatrix();
Run Code Online (Sandbox Code Playgroud)

javascript three.js

5
推荐指数
1
解决办法
1403
查看次数

MeshBasicMaterial 颜色色调纹理贴图 Three.js

我正在使用已应用颜色的 MeshBasicMaterial。

var material = new THREE.MeshBasicMaterial({color: myColor});
Run Code Online (Sandbox Code Playgroud)

有时我需要向材质添加纹理

material.map = new THREE.ImageUtils.loadTexture(...);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但材质的颜色正在给纹理着色。

我意识到我可以将材质的颜色更改为白色以消除这种着色,但找不到删除材质颜色或更改颜色和纹理混合方式的方法 - 这可能吗?我试图避免创建新材料并尽可能避免更换。

Lee Stemkoski 的示例中演示了 - 将地图更改为“草”,然后更改材质颜色

http://trijs.org/docs/scenes/material-browser.html#MeshBasicMaterial

blending colors texture-mapping three.js

5
推荐指数
1
解决办法
3552
查看次数

在collada对象上剥离阴影

我有一个带有两个collada物体和一个定向灯的场景.第一个collada几乎是一个平面,第二个是由多个盒子组成.

看起来当渲染场景时,一些"侧面"阴影确实被剥离,尽管在地面上投射的阴影很好地渲染.

这是阴影的截图.

当我正在寻找答案时,我发现它可能是我的collada的一个问题,所以我在场景中添加了一个基本的立方体(最重要的一个),但似乎它有同样的问题.

有没有人有提示或已经知道这个问题?

我正在使用最后三个.js版本atm(r71),在Google Chrome和Mozilla Firefox(MacOS)上测试过.我已经尝试调整定向灯的所有阴影*属性,除了与shadowCascade(我不使用)相关的属性.我还测试了调整与阴影相关的渲染器的属性.

这是我的灯光设置:

var directionalLight = new THREE.DirectionalLight( 0xffffff, 1 );
directionalLight.target.position = THREE.Vector3(0, 0, 0);
directionalLight.position.set( 250, 500, 250 );
directionalLight.castShadow = true;
directionalLight.shadowCameraNear = 100;
directionalLight.shadowCameraFar = 1000;
directionalLight.shadowMapWidth = 2048;
directionalLight.shadowMapHeight = 2048;
directionalLight.shadowBias = 0.0001;
directionalLight.shadowDarkness = 0.5;
directionalLight.shadowCameraLeft = -300;
directionalLight.shadowCameraRight = 300;
directionalLight.shadowCameraTop = 300;
directionalLight.shadowCameraBottom = -300;
directionalLight.shadowCameraVisible = true;
Run Code Online (Sandbox Code Playgroud)

我的collada对象有点大,我的shadowCamera边界也是如此.

我的渲染器设置:

renderer = new THREE.WebGLRenderer( {antialias: true} );
renderer.setClearColor(0x222222);
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;
renderer.shadowMapType …
Run Code Online (Sandbox Code Playgroud)

javascript shadow three.js directional-light

5
推荐指数
1
解决办法
403
查看次数

有可能让React移动一个元素而不是在它改变它在DOM中的位置时重新创建它吗?

有可能让React移动一个元素而不是在它改变它在DOM中的位置时重新创建它吗?

让我们假设我正在创建一个2窗格组件,我希望能够隐藏/取消隐藏一个窗格.我们也可以想象窗格本身很重.在我的例子中,每个窗格都有超过2000个元素.

在我的实际代码中,当有2个窗格时,我正在使用分割器.为了只显示一个窗格,我需要删除拆分器并用div替换它.

下面的代码模拟了这一点.如果有一个窗格,则使用a div来包含窗格.如果有2个窗格pre用于包含它们.在我的情况下,它将是div1痛苦和splitter2.

因此,document.createElement我发现不仅创建了容器,而且还重新创建了内部元素.换句话说,在我的代码中,当从splitter-> div开始时,2000+元素窗格将完全重新创建,这很慢.

有没有办法有效地告诉React."嘿,不要重新创建这个组件,只是移动它?"

class TwoPanes extends React.Component {
  constructor(props) {
    super(props);
  }
  render() {
    const panes = this.renderPanes();
    if (panes.length === 2) {
      return React.createElement('pre', {className: "panes"}, panes);
    } else {
      return React.createElement('div', {className: "panes"}, panes);
    }
  }
  renderPanes() {
    return this.props.panes.map(pane => {
      return React.createElement('div', {className: "pane"}, pane);
    });
  }
}

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      panes: [
        "pane …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

5
推荐指数
1
解决办法
4621
查看次数

如果在Unity3D中使用WebGL开发游戏,奖励视频广告有哪些选项?

我搜索了互联网,没有任何有用的链接.有人说使用Ad Sense,但我认为如果要发布到FB Canvas(如果我错了,请纠正我)是违反Facebook政策的.有没有可用的插件?或者有没有办法在团结之外将它设置在外部并使用它们来引用它们Application.ExternallCall.

unity-game-engine unity-webgl rewardedvideoad

5
推荐指数
0
解决办法
514
查看次数