我正在尝试使用ar_flutter_plugin在flutter平台上为移动的设备实现AR。我不知道如何计算ARNode对象的位置。添加对象到真实的的方法:
Future<void> addPointsOnmap() async {
var location = await Geolocator.getCurrentPosition();
var data = await GetObjekti.getResults(
location.latitude.toString() + "," + location.longitude.toString(), 2);
List<Result> results = data["results"];
for (var i = 0; i < results.length; i++) {
//I need to calculate value of position
ARNode node = ARNode(
type: NodeType.localGLTF2,
uri: "assets/Chicken_01/Chicken_01.gltf",
scale: Vector3(100.0, 100.0, 100.0),
position: Vector3(0.0, 0.0, 0.0),
rotation: Vector4(1.0, 0.0, 0.0, 0.0));
results[i].arNodeName = node.name;
bool? addNode = await arObjectManager.addNode(node);
if (addNode!){
nodes.add(node);
}
}
}
方法getResults从API获取数据,来自响应的一个对象的示例为:
{
"distance": 0.48079831661545036,
"centroid": {
"lon": 16.343588998,
"lat": 46.294568693
},
"label": "Some label",
"id": 106405,
"object_id": 10575,
"feature_class_id": 1431
}
其中距离是计算距离从用户的地理位置的地方从结果公里(公里)和质心包含地理经度和纬度。任何建议或帮助,欢迎。
1条答案
按热度按时间icnyk63a1#
要计算ARNode对象在真实空间中的位置,需要使用该位置的GPS坐标(纬度和经度)以及从用户位置到该位置的距离。
要实现这一点,可以使用以下方法:
将纬度和经度坐标转换为笛卡尔坐标。
使用从用户位置到地点的距离来计算ARNode在x、y和z轴上的位置。
下面是一个示例实现:
在本例中,我们将纬度和经度转换为笛卡尔坐标,然后使用距离来缩放位置,得到的位置向量表示ARNode对象在现实空间中相对于用户位置的位置。