Hi Josh, thank you very much it exactly what I was searching for. Just another question:
What the floatEq function does?? Serge Selon Justin Couch <[EMAIL PROTECTED]>: > Serge Bernier wrote: > > > Hi all, > > > > does anyone know how to convert the scaleOrientation information in a > VRML > > file to a Transform3D from Java3D??? > > Not directly. We do it as part of a large series of matrix multiplies > for all the Transform fields to make the final matrix that we use for > Java3d. > > Here's the complete code from inside our Transform node implementation: > > /** > * Calculate transforms needed to handle VRML semantics > * formula: T x C x R x SR x S x -SR x -C > */ > private void updateTransform() { > > //System.out.println(this); > tempVec.x = -vfCenter[0]; > tempVec.y = -vfCenter[1]; > tempVec.z = -vfCenter[2]; > > matrix.setIdentity(); > matrix.setTranslation(tempVec); > > float scaleVal = 1.0f; > > if (floatEq(vfScale[0], vfScale[1]) && > floatEq(vfScale[0], vfScale[2])) { > > scaleVal = vfScale[0]; > tempMtx1.set(scaleVal); > //System.out.println("S" + tempMtx1); > > } else { > // non-uniform scale > //System.out.println("Non Uniform Scale"); > tempAxis.x = vfScaleOrientation[0]; > tempAxis.y = vfScaleOrientation[1]; > tempAxis.z = vfScaleOrientation[2]; > tempAxis.angle = -vfScaleOrientation[3]; > > double tempAxisNormalizer = > 1 / Math.sqrt(tempAxis.x * tempAxis.x + > tempAxis.y * tempAxis.y + > tempAxis.z * tempAxis.z); > > tempAxis.x *= tempAxisNormalizer; > tempAxis.y *= tempAxisNormalizer; > tempAxis.z *= tempAxisNormalizer; > > tempMtx1.set(tempAxis); > tempMtx2.mul(tempMtx1, matrix); > > // Set the scale by individually setting each element > tempMtx1.setIdentity(); > tempMtx1.m00 = vfScale[0]; > tempMtx1.m11 = vfScale[1]; > tempMtx1.m22 = vfScale[2]; > > matrix.mul(tempMtx1, tempMtx2); > > tempAxis.x = vfScaleOrientation[0]; > tempAxis.y = vfScaleOrientation[1]; > tempAxis.z = vfScaleOrientation[2]; > tempAxis.angle = vfScaleOrientation[3]; > tempMtx1.set(tempAxis); > } > > tempMtx2.mul(tempMtx1, matrix); > > //System.out.println("Sx-C" + tempMtx2); > float magSq = vfRotation[0] * vfRotation[0] + > vfRotation[1] * vfRotation[1] + > vfRotation[2] * vfRotation[2]; > > if(magSq < ZEROEPS) { > tempAxis.x = 0; > tempAxis.y = 0; > tempAxis.z = 1; > tempAxis.angle = 0; > } else { > if ((magSq > 1.01) || (magSq < 0.99)) { > > float mag = (float)(1 / Math.sqrt(magSq)); > tempAxis.x = vfRotation[0] * mag; > tempAxis.y = vfRotation[1] * mag; > tempAxis.z = vfRotation[2] * mag; > } else { > tempAxis.x = vfRotation[0]; > tempAxis.y = vfRotation[1]; > tempAxis.z = vfRotation[2]; > } > > tempAxis.angle = vfRotation[3]; > } > > tempMtx1.set(tempAxis); > //System.out.println("R" + tempMtx1); > > matrix.mul(tempMtx1, tempMtx2); > //System.out.println("RxSx-C" + matrix); > > tempVec.x = vfCenter[0]; > tempVec.y = vfCenter[1]; > tempVec.z = vfCenter[2]; > > tempMtx1.setIdentity(); > tempMtx1.setTranslation(tempVec); > //System.out.println("C" + tempMtx1); > > tempMtx2.mul(tempMtx1, matrix); > //System.out.println("CxRxSx-C" + tempMtx2); > > tempVec.x = vfTranslation[0]; > tempVec.y = vfTranslation[1]; > tempVec.z = vfTranslation[2]; > > tempMtx1.setIdentity(); > tempMtx1.setTranslation(tempVec); > > matrix.mul(tempMtx1, tempMtx2); > > transform.set(matrix); > implTG.setTransform(transform); > } > > -- > Justin Couch http://www.vlc.com.au/~justin/ > Java Architect & Bit Twiddler http://www.yumetech.com/ > Author, Java 3D FAQ Maintainer http://www.j3d.org/ > ------------------------------------------------------------------- > "Look through the lens, and the light breaks down into many lights. > Turn it or move it, and a new set of arrangements appears... is it > a single light or many lights, lights that one must know how to > distinguish, recognise and appreciate? Is it one light with many > frames or one frame for many lights?" -Subcomandante Marcos > ------------------------------------------------------------------- > > =========================================================================== > To unsubscribe, send email to [EMAIL PROTECTED] and include in the body > of the message "signoff JAVA3D-INTEREST". For general help, send email to > [EMAIL PROTECTED] and include in the body of the message "help". > =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".