ThreeJS中的双面,obj模型

时间:2017-04-14 06:46:52

标签: javascript three.js

如何设置obj模型,在threejs中渲染双面(r.84)?

这是obj加载程序代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent" android:background="#aa000000">


<ScrollView
        android:layout_width="match_parent"
        android:fillViewport="true"
        android:layout_height="match_parent">

    <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content">


<ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/background"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignWithParentIfMissing="false" android:scaleType="centerCrop"
        android:id="@+id/blueBackground"
        android:background="#aa000000"

/>

    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
                  android:orientation="vertical"
                  android:layout_alignParentTop="true" android:layout_alignParentLeft="true"
                  android:layout_alignParentStart="true">

        <ImageView
                android:layout_width="match_parent"
                android:id="@+id/imageView"
                android:src="@drawable/applogo"
                android:layout_alignParentTop="true" android:layout_centerHorizontal="true"
                android:layout_height="60dp" android:layout_marginTop="25dp"
                android:layout_weight="2"
        />
        <TextView
                android:text="Text1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" android:id="@+id/textView7"
                android:textColor="@color/apptheme_color" android:textAlignment="viewStart"
                android:gravity="center_horizontal" android:layout_marginTop="35dp" android:textSize="18sp"
                android:layout_weight="1"
        />
        <TextView
                android:text="Text2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" android:id="@+id/numberTextView" android:gravity="center_horizontal"
                android:textColor="@color/apptheme_color" android:textSize="24sp"
                android:layout_weight="1"
        />
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/edit1"
                android:background="@drawable/blueborder"
                android:textColorHint="#FFFFFF"
                android:textColor="#FFFFFF"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_marginTop="16dp"
                android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="10dp"
                android:layout_weight="1"
                android:hint="Edit1"/>
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/edit2"
                android:background="@drawable/blueborder"
                android:textColorHint="#FFFFFF"
                android:textColor="#FFFFFF"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_marginTop="6dp"
                android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="10dp"
                android:layout_weight="1"
                android:hint="Edit2"/>
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/edi3"
                android:background="@drawable/blueborder"
                android:textColorHint="#FFFFFF"
                android:textColor="#FFFFFF"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_marginTop="6dp"
                android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="10dp"
                android:layout_weight="1"
                android:hint="Edit3"/>
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/edit4"
                android:background="@drawable/blueborder"
                android:textColorHint="#FFFFFF"
                android:textColor="#FFFFFF"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_marginTop="6dp"
                android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="10dp"
                android:layout_weight="1"
                android:hint="Edit4"/>
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine|textPersonName"
                android:ems="10"
                android:id="@+id/edit5"
                android:background="@drawable/blueborder"
                android:textColorHint="#FFFFFF"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_marginTop="6dp"
                android:paddingTop="10dp" android:paddingBottom="20dp" android:paddingLeft="10dp"
                android:layout_weight="3.33"
                android:scrollbars="vertical" android:hint="Notatka" android:lines="2" android:textColor="#FFFFFF"/>
        <CheckBox
                android:text="Checkbox1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" android:id="@+id/check1" android:layout_marginLeft="20dp"
                android:textColor="@color/apptheme_color"
                android:layout_weight="1"
        />
        <CheckBox
                android:text="Checkbox2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" android:id="@+id/check2" android:layout_marginLeft="20dp"
                android:textColor="@color/apptheme_color"
                android:layout_weight="1"
        />
        <Button
                android:text="Save"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" android:id="@+id/button" android:layout_weight="2"
                android:textColor="#02485a" android:background="@drawable/blackborder"
                android:layout_marginLeft="25dp" android:layout_marginRight="25dp"
                android:layout_marginBottom="16dp"/>
        </LinearLayout>
    </RelativeLayout>



</ScrollView>

1 个答案:

答案 0 :(得分:0)

三个js版本84没有OBJMTLLoader: https://github.com/mrdoob/three.js/issues/8105

linked解决方案只需进行一些小修改:

THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
  var mtlLoader = new THREE.MTLLoader();
  mtlLoader.setPath('house3/');
  mtlLoader.load( 'House.mtl', function( materials ) {
      materials.preload();
      var objLoader = new THREE.OBJLoader();
      objLoader.setMaterials( materials );
      objLoader.setPath( 'house3/' );
      objLoader.load( 'House.obj', function ( object ) {
          object.traverse( function( node ) {
              if( node.material ) {
                  node.material.side = THREE.DoubleSide;
              }
          });
          scene.add( object );
      });
  });