Просмотрите наши продукты

Aspose.3D для Java 24.2 Примечания к выпуску

Улучшения и изменения

KeySummaryCategory
THREEDJAVA-329Добавить нативные InputStream/OutputStream для операций ввода-вывода SceneУлучшение
THREEDNET-1499OBJ в GLTF - большое количество вершинУлучшение
THREEDNET-1509Обновить поддержку .net 1.0 до .net 8.0Улучшение
THREEDNET-1460Скелетные узлы, экспортированные в формате Fbx, не имеют преобразования, а имеют позуИсправление ошибки
THREEDNET-1494Добавлена поддержка расширения KHR_mesh_quantization при импорте GLTFИсправление ошибки
THREEDNET-1495Экспорт анимаций из GLB в FBX может вызвать сбой SlerpИсправление ошибки
THREEDNET-1496Неподдерживаемый тип атрибута может привести к остановке импортера MayaИсправление ошибки
THREEDNET-1497Примитив без допустимого значения свойства может не загрузиться в USDИсправление ошибки
THREEDNET-1498Проблема внешней ссылки 3MF в элементе сборкиИсправление ошибки

Изменения API

Эта версия в основном является версией исправления ошибок, несколько изменений API:

Добавлены члены в класс com.aspose.threed.Mesh:

    /**
     *  Возвращает треугольную сетку
     *
     * @return Текущая сетка, если текущая сетка уже треугольная, в противном случае будет рассчитана и возвращена новая треугольная сетка
     *
     */
    public Mesh triangulate()

Эта функция позволяет вам треуголизировать сетку простым способом.

Пример кода

        //Планшетная сетка имеет только один полигон с 191 контрольными точками
        Mesh mesh = (new Plane()).toMesh();
        //После треуголизации новый прямоугольник сетки станет 2 треугольниками.
        Mesh triangulated = mesh.triangulate();

Добавлены члены в класс com.aspose.threed.TriMesh:

    /**
     *  Добавить новый треугольник
     *
     * @param a Индекс первой вершины
     * @param b Индекс второй вершины
     * @param c Индекс третьей вершины
     */
    public void addTriangle(int a, int b, int c);

    /**    
     * Записать данные вершин в указанный поток    
     *    
     * @param stream Поток, в который будут записаны данные вершин    
     */    
    public void writeVerticesTo(OutputStream stream)    throws IOException;

    /**    
     * Записать данные индексов как 16-битное целое число в поток    
     *    
     * @param stream     
     * </pre>    
     *    
     */    
    public void write16bIndicesTo(OutputStream stream)    throws IOException;
        
    /**    
     * Записать данные индексов как 32-битное целое число в поток    
     *    
     * @param stream     
     */    
    public void write32bIndicesTo(OutputStream stream)    throws IOException;

Эта функция позволяет вам вручную добавлять треугольник к TriMesh.

Пример кода

  int[] indices = new int[] { 0,  1,  2 };
  byte[] vertices = new byte[]{
      0, 0, 0, 191,
      0, 0, 0, 0,
      0, 0, 0, 191,
      0, 0, 0, 191,
      0, 0, 0, 0,
      0, 0, 0, 63,
      0, 0, 0, 63,
      0, 0, 0, 0,
      0, 0, 0, 63
  };

  VertexDeclaration vd = new VertexDeclaration();
  vd.addField(VertexFieldDataType.F_VECTOR3, VertexFieldSemantic.POSITION);
  //создать пустую TriMesh с указанной декларацией вершин
  var triMesh = new TriMesh("", vd);
  //загрузить вершины непосредственно из байтов
  triMesh.loadVerticesFromBytes(vertices);
  triMesh.addTriangle(0, 1, 2);

Добавлены члены в класс com.aspose.threed.Scene:

    /**    
     *  Открывает сцену из данного потока, используя указанный формат файла.    
     *    
     * @param stream Входной поток, пользователь несет ответственность за закрытие потока.    
     * @param format Формат файла.    
     * @param cancellationToken Токен отмены для задачи загрузки    
     *    
     */    
    public static Scene fromStream(InputStream stream, FileFormat format, Cancellation cancellationToken)    
            throws IOException    
    /**    
     *  Открывает сцену из данного потока, используя указанный формат файла.    
     *    
     * @param stream Входной поток, пользователь несет ответственность за закрытие потока.    
     * @param format Формат файла.    
     *    
     */    
    public static Scene fromStream(InputStream stream, FileFormat format)    
            throws IOException    
    /**    
     *  Открывает сцену из данного потока, используя указанную конфигурацию ввода-вывода.    
     *    
     * @param stream Входной поток, пользователь несет ответственность за закрытие потока.    
     * @param options Более подробная конфигурация для открытия потока.    
     * @param cancellationToken Токен отмены для задачи загрузки    
     *    
     */    
    public void open(InputStream stream, SaveOptions options)    
            throws IOException    
    /**    
     *   Открывает сцену из данного потока    
     *    
     * @param stream Входной поток, пользователь несет ответственность за закрытие потока.    
     *    
     */    
    public void open(InputStream stream)    
            throws IOException    
    /**    
     *   Открывает сцену из данного потока    
     *    
     * @param stream Входной поток, пользователь несет ответственность за закрытие потока.    
     * @param cancellationToken Токен отмены для задачи загрузки    
     *    
     */    
    public void open(InputStream stream, Cancellation cancellationToken)    
            throws IOException    
    /**    
     *  Сохраняет сцену в поток, используя указанный формат файла.    
     *    
     * @param stream Выходной поток, пользователь несет ответственность за закрытие потока.    
     * @param format Формат.    
     *    
     */    
    public void save(OutputStream stream, FileFormat format)    
            throws IOException    
    /**    
     *  Сохраняет сцену в поток, используя указанный формат файла.    
     *    
     * @param stream Выходной поток, пользователь несет ответственность за закрытие потока.    
     * @param format Формат.    
     * @param cancellationToken Токен отмены для задачи сохранения    
     */    
    public void save(OutputStream stream, FileFormat format, Cancellation cancellationToken)    
            throws IOException    
    /**    
     *  Сохраняет сцену в поток, используя указанную конфигурацию ввода-вывода.    
     *    
     * @param stream Выходной поток, пользователь несет ответственность за закрытие потока.    
     * @param options Более подробная конфигурация для сохранения потока.    
     *    
     */    
    public void save(OutputStream stream, SaveOptions options)    
            throws IOException    
    /**    
     *  Сохраняет сцену в поток, используя указанную конфигурацию ввода-вывода.    
     *    
     * @param stream Выходной поток, пользователь несет ответственность за закрытие потока.    
     * @param options Более подробная конфигурация для сохранения потока.    
     * @param cancellationToken Токен отмены для задачи сохранения    
     *    
     */    
    public void save(OutputStream stream, SaveOptions options, Cancellation cancellationToken)    
            throws IOException    

Ранее существовала только версия Stream для save/open/fromStream, теперь мы поддерживаем InputStream/OutputStream из JDK.


 
 Русский