/** * Create the {@link AccessorData} for the given {@link AccessorModel} * * @param accessorModel The {@link AccessorModel} * @return The {@link AccessorData} */ public static AccessorData create(AccessorModel accessorModel) { BufferViewModel bufferViewModel = accessorModel.getBufferViewModel(); ByteBuffer bufferViewData = bufferViewModel.getBufferViewData(); return create(accessorModel, bufferViewData); }
@Override public float[] getInverseBindMatrix(int index, float[] result) { float localResult[] = Utils.validate(result, 16); AccessorFloatData inverseBindMatricesData = AccessorDatas.createFloat(inverseBindMatrices); for (int j = 0; j < 16; j++) { localResult[j] = inverseBindMatricesData.get(index, j); } return localResult; }
/** * Creates an {@link AccessorFloatData} for the given {@link AccessorModel} * * @param accessorModel The {@link AccessorModel} * @return The {@link AccessorFloatData} * @throws IllegalArgumentException If the * {@link AccessorModel#getComponentType() component type} of the given * accessorModel is not <code>GL_FLOAT</code> */ public static AccessorFloatData createFloat(AccessorModel accessorModel) { BufferViewModel bufferViewModel = accessorModel.getBufferViewModel(); return createFloat(accessorModel, bufferViewModel.getBufferViewData()); }
/** * Compute the bounding box of the {@link GltfModel} * * @return The bounding box */ BoundingBox compute() { BoundingBox boundingBox = new BoundingBox(); List<SceneModel> sceneModels = gltfModel.getSceneModels(); for (SceneModel sceneModel : sceneModels) { float rootTransform[] = MathUtils.createIdentity4x4(); computeSceneBoundingBox(sceneModel, rootTransform, boundingBox); } return boundingBox; }
/** * Creates an {@link AccessorByteData} for the given {@link AccessorModel} * * @param accessorModel The {@link AccessorModel} * @return The {@link AccessorByteData} * @throws IllegalArgumentException If the * {@link AccessorModel#getComponentType() component type} of the given * accessor is not <code>GL_BYTE</code> or <code>GL_UNSIGNED_BYTE</code> */ static AccessorByteData createByte(AccessorModel accessorModel) { BufferViewModel bufferViewModel = accessorModel.getBufferViewModel(); return createByte(accessorModel, bufferViewModel.getBufferViewData()); }
/** * Creates an {@link AccessorIntData} for the given {@link AccessorModel} * * @param accessorModel The {@link AccessorModel} * @return The {@link AccessorIntData} * @throws IllegalArgumentException If the * {@link AccessorModel#getComponentType() component type} of the given * accessorModel is not <code>GL_INT</code> or <code>GL_UNSIGNED_INT</code> */ static AccessorIntData createInt(AccessorModel accessorModel) { BufferViewModel bufferViewModel = accessorModel.getBufferViewModel(); return createInt(accessorModel, bufferViewModel.getBufferViewData()); }
/** * Creates an {@link AccessorShortData} for the given {@link AccessorModel} * * @param accessorModel The {@link AccessorModel} * @return The {@link AccessorShortData} * @throws IllegalArgumentException If the * {@link AccessorModel#getComponentType() component type} of the given * accessorModel is not <code>GL_SHORT</code> or * <code>GL_UNSIGNED_SHORT</code> */ static AccessorShortData createShort(AccessorModel accessorModel) { BufferViewModel bufferViewModel = accessorModel.getBufferViewModel(); return createShort(accessorModel, bufferViewModel.getBufferViewData()); }
@Override public int getComponentSizeInBytes() { return Accessors.getNumBytesForAccessorComponentType(componentType); }
@Override public Supplier<float[]> createLocalTransformSupplier() { return Suppliers.createTransformSupplier(this, NodeModel::computeLocalTransform); }
/** * Compute the number of bytes that the given {@link AccessorModel} data * has to be aligned to. * * @param accessorModel The {@link AccessorModel} * @return The alignment bytes */ static int computeAlignmentBytes(AccessorModel accessorModel) { return accessorModel.getComponentSizeInBytes(); }
@Override public AccessorData getAccessorData() { if (accessorData == null) { accessorData = AccessorDatas.create(this); } return accessorData; }
@Override public Supplier<float[]> createViewMatrixSupplier() { return Suppliers.createTransformSupplier(this, CameraModel::computeViewMatrix); }
@Override public Supplier<float[]> createGlobalTransformSupplier() { return Suppliers.createTransformSupplier(this, NodeModel::computeGlobalTransform); }