fix(viewer-lib): Handled WEB-4514: setUserObjectColors now works correctly with instances

This commit is contained in:
AlexandruPopovici
2025-10-18 16:25:43 +03:00
parent e64b309045
commit 616a62dbc0
3 changed files with 14 additions and 1223 deletions
-208
View File
@@ -504,214 +504,6 @@ export default class Sandbox {
// .getExtension(PassReader)
// .read(pass)
// console.log(PassReader.toBase64(PassReader.decodeDepth(depthData), width, height))
this.viewer.getExtension(FilteringExtension).isolateObjects(
[
'20eb6cd4de5d7f87d9589103c8524250',
'e144cf628cc9288828a7b5798d47bae0',
'167165fa9a0ba0d3e7aae00952507ee6',
'7efa97797447d1c0bf8d4b46cd587d33',
'4246cd721ee346b7e5b091205f15bacb',
'75ab141c0252ddf58e4593f9b9c67fa3',
'0446fd961a56e20793ef992f44d46c13',
'b33324ac8838480f760842f004bd67f3',
'96d18be4243f0e0579b0eadc72f7058f',
'4ec56ea944a12135a6fcfefc6a8fa9dc',
'a7fb8d76cc4e03798466dfa0734b219a',
'390d1e2560e88f52a0f598bb6ea8737f',
'4df35db7dc1b05dda18d362f0b71aacf',
'0a865ca22df5cb69589104b6e138e3bd',
'2d8d3b565632d2ab70f795b0e07ec74a',
'd943a39fc3006bb6f4ce99d26d802674',
'45184d241d47d494843799f5b94bf859',
'26c96a1a2aa1d30aa880542d5857d276',
'e075410fe25332497fd16ac69ecf2274',
'6d7233eef0b5886e618d62e68bab8596',
'df1ae91e229fab5a80c7035551273898',
'48e5bb9835dd4fdc3d5fd719ba59a70b',
'8781c97f760eb96dfa8644cdf655dad8',
'37a0d46210a207d76bd3defa77f245ae',
'd63dc5fb5f759a0bd3efab80caba5904',
'e585370b8f6e9d14831d125f03945dc1',
'39e227be5dbd219cc02b08bcf2788bc0',
'89a00a8a78747534df70dec3020f1600',
'595f06c3b8f1209f1bf56698db2be4b8',
'4939c24eeefc1450a4f8e741a48bb093',
'715169fea4144e4321a7ca669475e8f0',
'9749a77113ffed68cd8bdeca35aa1bfa',
'e49966f4e02f8b7d4c05639c34dc79ae',
'b5c9218765e580b91fa9ea177e29d7c1',
'cb5df2d1b7b229be5a532a6e41c307a7',
'4491ceef5af957512e3a794aa2a300d7',
'0b64efc63b65247a92b14aa7adcf30cc',
'70a0366379a95da29d352084e06a9557',
'9aa536690162edf28d4cab052f0f3632',
'e274722b689b47af00359290053748a5',
'85082088ca798ed02a5c3b746e2f2c09',
'0be51dc6a853c684a82ea8193349650e',
'2f377fbb47220ddf777e1af5ac7c975a',
'58348fb6214ae733b68053a56f257efa',
'03262af402f546ce89cb8259ef35b4b8',
'93974875d28250dbf9aca3e897c11b06',
'2a31ca14b87f50f38b498c7b91590df1',
'd0344181b56c872784556e693d579cb7',
'60226c3618d98d3cb991b4f819dec564',
'4a37229c6c786c5938f64799fdc367f4',
'cb25c446170ef18087b1534966d1e185',
'9f65bbfe60df1ceb860c02473afd1547',
'9e1eef3d448fabfb854fded9eb8297fd',
'7e8590483ad7f3f27d7dff9e042d89f3',
'8754cd1cc816f52aedc6f05ce11d4e99',
'8c79421d5054ef61b17885aaa16b60f6',
'08ed07465bfca77e21bb736a49e4ce9c',
'4e0d31a832dda72b4572785c86bea023',
'255670fe69a6bb5e9196d6aa156c66ea',
'd24012bd4a081f55bdf7e7c54ace96e3',
'043eabc1a59f6bc9e6561340f14f36d8',
'07b3d7cdb219fcb3848ef00ad3743d28',
'9fbf0a3ead1f25e021fbf56c19d99db5',
'068f1a825b32274a70f406d49d9c56a3',
'25292ba37aac928daf788fa472fc173d',
'3c99af68f18eabfbdc04919c0914fdb5',
'080675c3c8595b071d955ae1787df2f9',
'f13a2435c43058a204616bc724e454f3',
'58ca48074de8c8570745ef5af1d37194',
'c4832fbf26fe0570fadded66f25cd293',
'48e70a80a97802d0e92ef46293268622',
'8695a814036dc573fece6d782eb876f3',
'4994678a1e0a34126821e5777a66b081',
'ff76fda0752a214a8c3a4cfa65893424',
'847666c5375aa54fb7fef60f7de80231',
'05dbf4f0efcc5fc039bb2f968f480e2a',
'53a392016661f3d2e454cbb4455195c6',
'9103bfb9bf887970dc59e437db0ca751',
'9b35ab2f8f62ce8b7626758002011b45',
'd084e9d3c0a4f4fd2e8b4d087acd73fa',
'70b6233ad9a1198c17ce27145405adaf',
'423da2f46fa4948cf8bbaff688cfd342',
'b067a8b3de96a82fa8795efd2c24d9bd',
'b1d854c09874c953e04af9a93ea35608',
'ab2327bb6879d88c55ebe2ad56fe5577',
'8e90c76862ae5d6aed145b8c7d36c09f',
'f3b1a3e2db48c0c64065bf8ab355a250',
'290e976d25168a180ae6640398a96e36',
'fc7bb7a830539e5574acbbc3a2c5d052',
'887bb354981f67c222375d1dc6eb87d2',
'546ac503b5b2c4d9bb5c0b0952e15594',
'ce7000c53780accf07345a5cd0687774',
'7cb62047b3539993133d537ecbff25c9',
'b14f0503f44350f43ee478a42fc59f8c',
'f60f8d0b60778bf5ff9e1f238192df8e',
'0b71f0252cd797a57e4cdd3e38e78bf7',
'9b75709e596baeedbb31e61227673020',
'8eb0a4c3efbe38f6f8a4e711881ead1a',
'ecbfa2c1fad0b6f6f38c48f748033fc3',
'0eed3a97d88952e8a4700ee346074d87',
'1e4fbb9f99a9cca00ba6431d775e02c1',
'656afb82aed3e64041ab8d77614d4dbc',
'2306fce94b5c13aeb8c432105ffa5500',
'3dfe5297aeaf629f70784eeb3be90887',
'57cef871607b3ccd3f4dae724f8d2482',
'30d07b533b6ca2011a475ff158c05383',
'48a9b76066c735aa6410d66e64cb00c5',
'f663dec47c9d98590bda0ad4fd5081ea',
'ad137b999044147da85433d975c5c7d6',
'f8b5e42f44d1b29a654996609c8aecd7',
'1574fefc2aea9344e3aac63d635e76e1',
'394c842457913ab37d87ec128692a08b',
'ec0daaee5253aaca92bd2db5095a00b8',
'4609eb6f004a0455c163ac298ee93c49',
'90e347ff29bdc683ff14a1e3f8c0a9a7',
'0d69837024bcff354e40d3fddce238ac',
'30cb009e8b520b6755a9aa77cf90f621',
'64dd9e3ee395cbc326931996cba9bcb0',
'b8a9bda867f5065108764814afb91df9',
'567ad13cbb659bf814cdec297cae4d7f',
'b0a21c500da7a703d3adf87aa08e7d9b',
'e9adfc36c42b00328583e1262dc86ffc',
'f682e467decc50883dc9a62efbdc6b94',
'd0fed42c67150bef94efbe11ab7aea7a',
'0403e38f2baa4ad368c63f2658cb77ed',
'db02a1c2b47a955d387874134626ebb7',
'47ef30444e3f09324de6aaedb82e255c',
'a35c69873fba3f9dfe0a074bb229bc3f',
'5c3548a022100a4c76334d5c2604d547',
'285143ff3859184410427e241ef36a32',
'e54e4ea3824b60403b5677e6228a2d0e',
'17b6b145f28af003b52a11c08191628d',
'9fa2b2b4667dc99d8c4f3a273c90080a',
'ac8869c1764e02dcbf8f1ec2cc2d41ea',
'7379e3d2f030cbce1753027dcab21151',
'b379ddab75520c35213a4ac1bd577bb8',
'21699abeb2ad664485ea23c44dd00aac',
'36b41284c7bda1a25bf4eb97fa6dc35f',
'1baca52113a1f778ac1f221c26309c40',
'ce62dd9635fddc48376aafa3002b16ba',
'1dc0ebd2888e2fbef69ef5d55bbd9022',
'4528030dbc42a71685f2581a35695e4a',
'23811daa60c84fd53ece6b020f1b05be',
'038eb6e2487b05c0f0f59127e4954d43',
'074085904d43181e0cb68cf11b5ccc81',
'b3a7100971bb7a84cd534957e39ea6db',
'3d6f96ea88d9bb24917bcfa3e93d8d92',
'2e60de016b49969a61da75d7b7a36d48',
'157e69c2b36c12d522a6eb21c791ea8f',
'74d76c74aa02da636e83e8b419974e46',
'76be167eff2e6e90e6a22631cbff982b',
'183cccfb3bfee67276297cfafe47b643',
'7ca2b2971c9aa8d28a32d427e5e444e6',
'b9a440d1cdf1d0dc2d355dab83359bf4',
'bd108d4524f9f8004a5db9f2a12e0680',
'171a413b3bf90055b9a9414a661e1c2b',
'ccc4f8eb3be85219780d72b1c6017199',
'4a5f1cffb7d39175c3bf499f9c2696f8',
'967455fee0c4255adb29c92d52ef4948',
'9f2f4c7ef8b7632d1bd9972eb3ef7765',
'a0bca02eed95eb1e0f4391a8ef85c1e3',
'1284fa50c6cd99ac9709dfc30c9cc81b',
'00264b204936ba09194a8604870ad851',
'789275bc1d5b54fa42ddc3d4dd96dec2',
'42a15d17918dc32768db5068d58a1887',
'02d710c06fb6608f0f03a49c9f58d3a8',
'af80ee83e7a6cb2315026f3d5f07adbd',
'7fd95ebc614c2e8c5e915c2794d614ce',
'0fd95d9ed66becc45e2346065c657944',
'd01be03fe98e82079ebf60bbc1b83513',
'51f467a8ec820b54a6ac36323e3a3325',
'bbb07f70c400930a1f78e259611db8b8',
'e6e8ff5353661a6c228fa92cd7ddbcd0',
'ae8b9d0abb72b4bfd293ec8ff66eeaaf',
'069503a38eabca48d6b47ec5dc624731',
'3d66c1038ff4eed1f6272360b4e11c9f',
'58411a3565b1aa416c0ed522799e90ad',
'02c548c1e1ee50862bf1cac6f1690c4a',
'faf111b0454d50643bbb81a72a6bdfe1',
'cce94f974c0535ceef0e2f632be9c553',
'3d3317e0d2eb4ca357027e1a686d3534',
'71bf4019edc3f3edb3a5a65d80b2cc2a',
'4bd34cbb6bfd9f4752af500fbb00984a',
'd1997b1b19f06e39be98f0aee3e36fa4',
'87816ab0ec809192a58f3392b787d492',
'2d1706551bf7cd317c5c4a43deaf0b21',
'dcb28c75f0d12056aba566ccaffa8080',
'9773c99d548e405dd3fac908b1f95242',
'e3fd023031be21f90e0c44beed9d028a',
'9d69cc472630b76307eb4eb910c88c68',
'cd52d3f7227502d9638962ca02c127c4',
'ed1f9cda5f7cb22e9e57c1ff734bd23e',
'50a251d0680529b6937bf76ca818fc2f',
'b606c2d45df78e80d615433689b5fb45',
'720fd46ccb610ca4a4f4e56937b98382',
'2364989dc9a0f309e77ee36ae56ba9e7',
'21f970ce99d0d6bbd2aa39945d72e402',
'35308e29dc26a19f50a63b9e90640300',
'ac7160426eb186387bca0f87e9eeb316',
'046df18a608300c7128c5eaa547ff318'
],
undefined,
true,
false // NOTE TO ALEX: Toggle this to true and it's ok
)
})
const rotate = this.tabs.pages[0].addButton({
File diff suppressed because it is too large Load Diff
@@ -274,6 +274,7 @@ export class InstancedMeshBatch implements Batch {
range.materialOptions.rampWidth !== undefined
) {
const start = ranges[k].offset
const count = ranges[k].count
/** The ramp indices specify the *begining* of each ramp color. When sampling with Nearest filter (since we don't want filtering)
* we'll always be sampling right at the edge between texels. Most GPUs will sample consistently, but some won't and we end up with
* a ton of artifacts. To avoid this, we are shifting the sampling indices so they're right on the center of each texel, so no inconsistent
@@ -281,7 +282,11 @@ export class InstancedMeshBatch implements Batch {
*/
const shiftedIndex =
range.materialOptions.rampIndex + 0.5 / range.materialOptions.rampWidth
this.updateGradientIndexBufferData(start / 16, shiftedIndex)
this.updateGradientIndexBufferData(
start / 16,
(start + count) / 16,
shiftedIndex
)
}
/** We need to update the texture here, because each batch uses it's own clone for any material we use on it
* because otherwise three.js won't properly update our custom uniforms
@@ -699,9 +704,15 @@ export class InstancedMeshBatch implements Batch {
return geometry
}
private updateGradientIndexBufferData(index: number, value: number): void {
private updateGradientIndexBufferData(
start: number,
end: number,
value: number
): void {
const data = this.getCurrentGradientBuffer()
data[index] = value
for (let k = start; k < end; k++) {
data[k] = value
}
}
public purge(): void {