Je montre l'objet 3D dans ArFragment. J'ai donc mis le fichier .obj et le fichier .mtl dans le dossier sampledata. Et je fais un clic droit sur le fichier obj et sélectionnez Importer le fichier Sceneform Asset pour ajouter le fichier .sfa/.sfb.
Je peux donc montrer l'objet 3D lorsque je marque l'image, mais l'objet est trop grand.
Ceci est mon détail de fichier .sfa
{
bound_relative_root: {
x: 0.5,
y: 0,
z: 0.5,
},
materials: [
{
name: "Material.001",
parameters: [
{
baseColor: null,
},
{
baseColorTint: [
0.80000000000000004,
0.80000000000000004,
0.80000000000000004,
1,
],
},
{
metallic: 1,
},
{
roughness: 0.120695,
},
{
opacity: null,
},
],
source: "build/sceneform_sdk/default_materials/obj_material.sfm",
},
],
model: {
attributes: [
"Position",
"TexCoord",
"Orientation",
],
collision: {},
file: "sampledata/dongbaek.obj",
name: "dongbaek",
recenter: "root",
scale: 0.200000
},
version: "0.52:1",
}
Je pense qu'il peut être redimensionné par partie d'échelle, mais je change la valeur, cela ne change pas. même taille
Alors, comment puis-je redimensionner un objet 3D?
Y a-t-il un problème lors de l'ajout d'un fichier d'objet 3D pour créer un fichier .sfa/.sfb? (Importer un élément Sceneform)
Si vous le savez, aidez-moi.
La mise à l'échelle des objets est modifiée par le contrôleur d'échelle. En définissant la valeur minScale et maxScale. Avant de définir le parent - nœud d'ancrage. Voir l'exemple ci-dessous.
// Create the Anchor.
Anchor anchor = hitResult.createAnchor();
AnchorNode anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arFragment.getArSceneView().getScene());
// Create the transformable andy and add it to the anchor.
TransformableNode node = new TransformableNode(arFragment.getTransformationSystem());
node.getScaleController().setMaxScale(0.01f);
node.getScaleController().setMinScale(0.01f);
node.setParent(anchorNode);
node.setRenderable(renderable);
node.select();
Différentes approches selon votre projet:
tilisez le code suivant pour redimensionner votre modèle dans ARCore:
TransformationSystem transSys;
transSys = MainActivity.getArFragment().getTransformationSystem();
TransformableNode myNode = new TransformableNode(transSys);
myNode.setLocalScale(new Vector3(0.25f, 0.25f, 0.25f));
myNode.setParent(anchorNode);
//myNode.setParent(sceneView.getScene());
myNode.setRenderable(myModelRenderable);
sceneView.getScene().addChild(node);
myNode.select();