невозможно раскрасить лица с помощью indexedfaceSet в x3dom

Я ищу способ отобразить некоторые сетки с отображением цветов в браузере Chrome, поэтому я пробовал x3dom и indexedFaceSet. Я предполагаю, что есть способ назначить цвета вершинам, чтобы цвет грани интерполировался, или, по крайней мере, я должен иметь возможность назначать разные постоянные цвета для каждой грани. Кажется, что что бы я ни пытался, я могу отображать только линии лиц, а определенные цвета не имеют никакого эффекта. В настоящее время у меня есть этот HTML-код:

<html>
<head>
<script type='text/javascript' src='http://www.x3dom.org/download/x3dom.js'> </script> 
<link rel='stylesheet' type='text/css' href='http://www.x3dom.org/download/x3dom.css'></link>
</head>

<body>
    <X3D width='600px' height='400px' showLog='true'>
        <Scene>
            <Shape>
                <IndexedFaceSet coordIndex='0 1 2 -1, 1 2 3 -1' colorPerVertex='true' solid='false'>
                    <Coordinate point='0 0 0, 1 0 0, 0 1 0, 1 1 0'/>
                    <Color color='0 1 0, 1 0 0, 0 0 1, 0 1 0'/>
                </IndexedFaceSet>
            </Shape>
        </Scene>
    </X3D>
</body>
</html>

Я полагаю, что либо я упустил что-то очень простое, либо x3dom не работает должным образом на моей машине.


person Tomas Letal    schedule 12.08.2015    source источник


Ответы (2)


Возможное решение заключается в использовании формата .xhtml (а не .html) со следующим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
  <head>
    <link rel='stylesheet' type='text/css' href='x3dom.css'/>
  </head>
  <body>
    <X3D width='600px' height='526px'>
      <Scene>
        <Transform>
          <Shape>
            <IndexedFaceSet solid='false' coordIndex='0 1 2 -1'>
              <Coordinate point='1 0 0 0 2 0 0 0 3'/>
              <Color color='1 0 0 0 1 0 0 0 1'/>
            </IndexedFaceSet>
          </Shape>
        </Transform>
      </Scene>
    </X3D>
  <script type="text/javascript" src='http://www.x3dom.org/download/x3dom.js'></script>
  </body>
</html>

Это решение было создано путем сокращения этого примера до "минимального примера" того, что я пытался выполнить.

person Tomas Letal    schedule 25.08.2015

Эффективно. Как сказал Томас, мы должны использовать формат .xhtml, а не .html. См. ниже мой ответ, пример того, как нарисовать пирамиду с помощью IndexedFaceSet, используя поля colorIndex и color

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<script type="text/javascript" src='http://www.x3dom.org/download/x3dom.js'></script>
<link rel='stylesheet' type='text/css' href='x3dom.css'/>
</head>
<body>
<X3D width='50%' height='50%'>
<Scene>
<Shape>
<Appearance><Material specularColor='1 1 1' shininess='0.9' /></Appearance>
<IndexedFaceSet solid='false' creaseAngle='0.000' colorPerVertex='false' coordIndex='0 1 2 -1 0 1 3 -1 0 2 3 -1 1 2 3 -1' colorIndex='0 1 0 2' >
<Coordinate point='1 0 0  0 1 0  0 0 1  0 0 0 ' />
<Color color='1. 0. 0. 0. 1. 0. 0. 0. 1.' />
</IndexedFaceSet>
</Shape>
</Scene>
</X3D>
</body>
</html>
person Jean-Louis Domingues    schedule 19.05.2020