setHeightsFromImage method

void setHeightsFromImage(
  1. Image image,
  2. Vec3 scale
)

Sets the height values from an image. Currently only supported in browser.

Implementation

void setHeightsFromImage(Image image, Vec3 scale) async{
  final x = scale.x;
  final y = scale.y;
  final z = scale.z;
  // final canvas = document.createElement('canvas');
  // canvas.width = image.width;
  // canvas.height = image.height;
  // final context = canvas.getContext('2d')!;
  // context.drawImage(image, 0, 0);
  final toByteData = await image.toByteData();
  final imageData = toByteData!.buffer.asUint8List();//context.getImageData(0, 0, image.width, image.height);

  final matrix = data;
  matrix.clear();
  elementSize = x.abs() ~/ image.width;
  for (int i = 0; i < image.height; i++) {
    final List<double> row = [];
    for (int j = 0; j < image.width; j++) {
      final a = imageData[(i * image.height + j) * 4];
      final b = imageData[(i * image.height + j) * 4 + 1];
      final c = imageData[(i * image.height + j) * 4 + 2];
      final height = ((a + b + c) / 4 / 255) * z;
      if (x < 0) {
        row.add(height);
      } else {
        row.insert(0,height);
      }
    }
    if (y < 0) {
      matrix.insert(0,row);
    } else {
      matrix.add(row);
    }
  }
  updateMaxValue();
  updateMinValue();
  update();
}