javascript - 低比例模型不在 THREE.js 中绘制
问题描述
我用这段代码画了一个球体
function sphere(cena,x,y,z,radius,colorr)
{
var sphereGeometry = new THREE.SphereGeometry( radius, 10, 10);
var materiall = new THREE.MeshBasicMaterial( { color: colorr , side: THREE.DoubleSide} );
var cir = new THREE.Mesh( sphereGeometry, materiall )
cir.position.x=x;
cir.position.y=y;
cir.position.z=z;
cena.add( cir );
return cir ;
}
现在我正在绘制一个半径为 10^(-6) 的球体
var um=Math.pow(10,-6);
sphere(scene,0,0,0,um*3.5,'green')
什么都没有画出来。um*30 也是如此。仅从 um*300 开始出现球体。附近的相机设置为 0.000001
我需要那个秤,怎么办?
顺便说一句,线条画得很好
解决方案
这取决于您如何放置相机。试试这个代码:
var camera, scene, renderer;
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.000001, 1 );
scene = new THREE.Scene();
var um = Math.pow( 10, - 6 );
camera.position.z = um * 10;
var mesh = sphere( scene, 0, 0, 0, um * 3.5 , 'green' );
scene.add( mesh );
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
}
function animate() {
requestAnimationFrame( animate );
renderer.render( scene, camera );
}
function sphere(cena,x,y,z,radius,colorr) {
var sphereGeometry = new THREE.SphereBufferGeometry( radius, 10, 10);
var materiall = new THREE.MeshBasicMaterial( { color: colorr , side: THREE.DoubleSide} );
var cir = new THREE.Mesh( sphereGeometry, materiall );
cir.position.x=x;
cir.position.y=y;
cir.position.z=z;
cena.add( cir );
return cir;
}
<script src="https://cdn.jsdelivr.net/npm/three@0.114/build/three.js"></script>
推荐阅读
- c# - 为什么 System.Net.WebSockets 不是基于事件的?
- java - 二维数组中“获取最低值”方法的问题
- cfgrib - 如何按压力级别提取信息?
- javascript - Jquery 方法不适用于动态生成的元素
- javascript - 在 Angular 中制作 editForm 的最简单方法是什么?
- r - 如何有效地找到序列坐标inn R的两个数据表之间的重叠?
- react-native - 测试套件无法运行从“mylocalfile.js”中找不到模块“@env”
- android - 防止 Google Admob 服务限制
- powershell - Powrshell 导出所有 PC 的列表以及它们是否安装了特定的应用程序
- android - 具有动态项目高度的水平 RecyclerView