在运行时更改使用Three.js创建的3D多维数据集的宽度/高度/长度

UID

我们可以在运行时更改使用Three.js创建的3D多维数据集的尺寸“宽度/高度/长度”吗?

就像我在SO中得到一个小提琴一样,它会在运行时更改多维数据集的颜色:http : //jsfiddle.net/mpXrv/1/

同样,我们可以更改尺寸吗?

这是我的代码:

的HTML

<script src="http://www.html5canvastutorials.com/libraries/three.min.js"></script>
<div id="container"></div>
<div class="inputRow clear" id="dimensionsNotRound" data-role="tooltip">
    <label class="grid-8">Dimensions (mm):</label>
    <br/>
    <br/>
    <div> <span>Length</span>

        <input class="numeric-textbox" type="text" value="">
        <br/>
        <br/>
    </div>
    <div> <span>Width</span>

        <input class="numeric-textbox" type="text" value="">
        <br/>
        <br/>
    </div>
    <div> <span>Height</span>

        <input class="numeric-textbox" type="text" value="">
        <br/>
        <br/>
    </div>
    <button id="btn">Click me to change the Dimensions</button>

JS

    //Script for 3D Box 


// revolutions per second
var angularSpeed = 0.2;
var lastTime = 0;

// this function is executed on each animation frame
function animate() {
    // update
    var time = (new Date()).getTime();
    var timeDiff = time - lastTime;
    var angleChange = angularSpeed * timeDiff * 2 * Math.PI / 1000;
    cube.rotation.y += angleChange;
    lastTime = time;

    // render
    renderer.render(scene, camera);

    // request new frame
    requestAnimationFrame(function () {
        animate();
    });
}

// renderer
var container = document.getElementById("container");
var renderer = new THREE.WebGLRenderer();
renderer.setSize(container.offsetWidth, container.offsetHeight);
container.appendChild(renderer.domElement);


// camera
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
camera.position.z = 700;

// scene
var scene = new THREE.Scene();

// cube
var cube = new THREE.Mesh(new THREE.CubeGeometry(400, 100, 200), new THREE.MeshLambertMaterial({
    color: '#cccccc'
}));
cube.overdraw = true;
cube.rotation.x = Math.PI * 0.1;
cube.rotation.y = Math.PI * 0.3;
scene.add(cube);

// add subtle ambient lighting
var ambientLight = new THREE.AmbientLight(0x888888);
scene.add(ambientLight);

// directional lighting
var directionalLight = new THREE.DirectionalLight(0x666666);
directionalLight.position.set(1, 1, 1).normalize();
scene.add(directionalLight);

// start animation
animate();

这是同样的小提琴!http://jsfiddle.net/EtSf3/1/

让我知道您是否需要其他信息。

请提出建议。

保罗·拉德

解决方案1(更好)

您必须使用比例网格属性来增加(或减小)对象的尺寸。

http://jsfiddle.net/EtSf3/4/

首先,您需要将cube变量设置为全局范围。

我已将您的多维数据集的尺寸替换为1、1、1。

cube = new THREE.Mesh(new THREE.CubeGeometry(1, 1, 1), new THREE.MeshLambertMaterial({
  color: '#cccccc'
}));

在btn上附加一个偶数

var $ = function(id) { return document.getElementById(id); };

$('btn').onclick = function() {
    var width = parseInt($('inp-width').value),
        height = parseInt($('inp-height').value),
        length = parseInt($('inp-length').value);

    cube.scale.x = width;
    cube.scale.y = height;
    cube.scale.z = length;
};

解决方案2

另一个解决方案是删除您的对象,并使用给定的值创建一个新的网格。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Three.js:在运行时更改纹理

来自分类Dev

Three.js-在运行时更改JSON材质

来自分类Dev

在运行时更改UITextField的高度

来自分类Dev

在运行时更改tableview的高度

来自分类Dev

在运行时更改three.js中已加载的.obj的纹理

来自分类Dev

如何在运行时更改ImageView的宽度?

来自分类Dev

在运行时从 localfile 导入 Three.js 中的 3d 模型

来自分类Dev

在运行时更改拆分容器的面板高度

来自分类Dev

在运行时更改拆分容器的面板高度

来自分类Dev

使用通用存储库和IoC在运行时更改数据库

来自分类Dev

使用 MVC WebApi 2 在运行时更改数据库

来自分类Dev

在运行时更改数据框的列名

来自分类Dev

在运行时更改数据透视表头

来自分类Dev

在运行时更改数据透视表头

来自分类Dev

Swift ...在运行时更改.js文件的变量

来自分类Dev

Swift ...在运行时更改.js文件的变量

来自分类Dev

可以在运行时使用Javascript创建函数吗?

来自分类Dev

使用反射在运行时创建类

来自分类Dev

使用反射在运行时创建类

来自分类Dev

Android-使用Dagger在运行时创建对象

来自分类Dev

在运行时创建对象并使用它们

来自分类Dev

在运行时使用动态名称创建Qlabel

来自分类Dev

使用TypeBuilder获取在运行时创建的类的类型

来自分类Dev

Three.js JSON运行时更改材料(纹理)

来自分类Dev

更改three.js线素材运行时

来自分类Dev

使用Camel在运行时配置数据源

来自分类Dev

使用Webpack在运行时动态要求JS文件

来自分类Dev

更改使用Three.js创建的3D“立方体”的角度

来自分类Dev

在运行时访问UIView宽度