ParametricBufferGeometry в THREE.js

В коде примера моделирования ткани есть нечто, называемое ParametricBufferGeometry, которое принимает 3 параметра. Что на самом деле означает эта функция?

clothGeometry = new THREE.ParametricBufferGeometry(clothFunction, cloth.w, cloth.h);

В документах я не нашел подходящей документации для него.

ParametricBufferGeometry (func: Функция, срезы: Integer, stacks: Integer) func - Функция, которая принимает значения au и v, каждое между 0 и 1, и изменяет третьи срезы аргумента Vector3 - Количество срезов, используемых для стеков параметрических функций - Количество стеков, используемых для параметрической функции

Может ли кто-нибудь объяснить мне, что это на самом деле..

2 ответа

Решение

Может ли кто-нибудь объяснить мне, что это на самом деле

В документации указано, что func - параметрическая функция, которая принимает на входе два значения (u, v) в диапазоне [0,1] и выводит результат в целевой вектор.

Идея состоит в том, что вы можете создать всю геометрическую поверхность, вызвав функцию с постепенно изменяющимися параметрами. Чем чаще вы вызываете функцию, тем выше частота дискретизации и, следовательно, более детализированная геометрия.ParametricGeometry несет ответственность за управление этим процессом в соответствии с slices а также stacks параметры.

Я предлагаю вам погуглить термин parametric surfacesесли вы хотите узнать больше по этой теме. Соответствующая литература довольно обширна.

То, что вы тестировали, является адресом блокнота Observable, я также изучаю его. После некоторого теста я решил это в своей локальной среде разработки следующим образом ("three": "^0.142.0",):

      async function _THREE(require) {
  // window variable called by modules in three/examples/js/
  const THREE = window.THREE = await 
  require("three@0.121.1/build/three.min.js");
  await require('three/examples/js/controls/OrbitControls.js')
  await require("three/examples/js/geometries/ParametricGeometry.js")
  return THREE;
}
// cloth geometry
clothGeometry = new THREE.ParametricGeometry(
  clothFunction,
  cloth.w,
  cloth.h
);
Другие вопросы по тегам