MCPcopy
hub / github.com/widgetti/ipyvolume / create_mesh

Method create_mesh

js/src/mesh.ts:486–690  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

484 }
485
486 create_mesh() {
487 /*console.log("previous values: ")
488 console.log(this.previous_values)
489 console.log("attributes changed: ")
490 console.log(this.attributes_changed)*/
491 this.meshes = [];
492 let sequence_index_original;
493 let sequence_index_previous_original;
494
495 let sequence_index = sequence_index_original = this.model.get("sequence_index");
496 let sequence_index_previous = sequence_index_previous_original = sequence_index;
497
498 if (typeof this.previous_values.sequence_index !== "undefined") {
499 sequence_index_previous = sequence_index_previous_original = this.previous_values.sequence_index;
500 }
501
502 let time_offset;
503 let time_delta;
504
505 if (sequence_index >= sequence_index_previous) {
506 time_offset = sequence_index_previous - Math.floor(sequence_index_previous);
507 time_delta = sequence_index - sequence_index_previous;
508 sequence_index = Math.ceil(sequence_index);
509 sequence_index_previous = Math.floor(sequence_index_previous);
510 // if we are at integer sequence frame, we can simply interpolate
511 if ((sequence_index_previous !== sequence_index_previous_original) || (sequence_index !== sequence_index_original)) {
512 // but when we are not, we should interpolate from the nearest sequence frame to get a proper animation
513 if ((sequence_index - sequence_index_previous) > 1) {
514 sequence_index_previous = sequence_index - 1;
515 time_delta = sequence_index_original - sequence_index_previous;
516 time_offset = 0;
517 }
518 }
519 } else {
520 time_offset = Math.ceil(sequence_index_previous) - sequence_index_previous;
521 time_delta = sequence_index_previous - sequence_index;
522 sequence_index = Math.floor(sequence_index);
523 sequence_index_previous = Math.ceil(sequence_index_previous);
524 if ((sequence_index_previous !== sequence_index_previous_original) || (sequence_index !== sequence_index_original)) {
525 if ((sequence_index_previous - sequence_index) > 1) {
526 sequence_index_previous = sequence_index + 1;
527 time_offset = 0;
528 time_delta = sequence_index_previous - sequence_index_original;
529 }
530 }
531 }
532
533 if (time_delta > 1) { // we're going over a 'keyframe' border
534 time_delta = time_delta % 1;
535
536 if (time_delta === 0) {
537 // special case
538 time_delta = 1.;
539 }
540 }
541
542 if (time_delta === 0) {
543 // occurs when we don't change keyframes, but just a property

Callers 2

renderMethod · 0.95
update_Method · 0.95

Calls 9

trimMethod · 0.95
padMethod · 0.95
merge_to_vec3Method · 0.95
ensure_arrayMethod · 0.95
update_shadowMethod · 0.95
pushMethod · 0.80
keysMethod · 0.80
getMethod · 0.45
transitionMethod · 0.45

Tested by

no test coverage detected