Three.js中TrackballControls.target的特殊行为

问题描述 投票:0回答:1

我正在尝试模拟星系的3D分布。

星系是点。

[question1.htm使用galaxydata1.txt来计算和加载星系位置:

rawFile.open("GET", "galaxydata1.txt", false);

var parts = data[i].split("\t");

var D = parts[0];
var glon = parts[1]*3.1416/180;
var glat = parts[2]*3.1416/180;

var z = D*Math.sin(glat);
var xy = D*Math.cos(glat);
var x = xy*Math.cos(glon);
var y = xy*Math.sin(glon);

dotGeometry.vertices.push(new THREE.Vector3( x, y, z ));                

我想模拟以在资源受限的设备中工作。因此,我认为我可以事先计算位置并将它们保存在文件中。

我使用write.htmcreate galaxydata2.txt进行了此操作。

[question2.htm使用galaxydata2.txt加载星系位置:

var parts = data[i].split(" ");

rawFile.open("GET", "galaxydata2.txt", false);

dotGeometry.vertices.push(new THREE.Vector3( parts[0], parts[1], parts[2] ));

由于[question1.htmquestion2.htm都生成完全相同的模型,因此可以验证变换是正确的。

现在,我已经实现了星系搜索功能,该功能可以按名称搜索星系并使用以下命令将其居中:

controls.target = dots.geometry.vertices[i];

您可以

通过搜索m31进行尝试

(仙女座星系的名称之一。令人困惑的是,虽然

星系搜索功能在question1.htm中有效,但在question2.htm中无效!

自最近两天以来,我已经花费了数十个小时试图找到原因,但是

无法理解它的头或尾。

请注意,我已经使用

完全相同的代码来计算两种情况下的位置。

[很可能,我缺少这里的专家会立即明白的东西。

如果可能,请指导我。

javascript three.js controls trackball
1个回答
1
投票
您的搜索功能中的dots.geometry.vertices尚未转换为浮点数。它们都是字符串。

1:n {x:“ -34.10470732858122”,y:“ 95.77578953486031”,z:“ -66.52906941334713“}2:n {x:“-23.203470164906907”,y:“ 64.44921156287786”,z:“-43.97565350543055“}3:n {x:“-22.228259825915906”,y:“ 57.0117730686664”,z:“-31.448405312168955“}

因此将不起作用。

加载数据之后,您需要对数据进行.parseFloat,然后将其填充到几何中。

© www.soinside.com 2019 - 2024. All rights reserved.